proto.io 0.0.205 → 0.0.207

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 (54) hide show
  1. package/dist/adapters/file/aliyun-oss.d.ts +3 -3
  2. package/dist/adapters/file/database.d.ts +2 -2
  3. package/dist/adapters/file/database.js +2 -2
  4. package/dist/adapters/file/database.js.map +1 -1
  5. package/dist/adapters/file/database.mjs +2 -2
  6. package/dist/adapters/file/database.mjs.map +1 -1
  7. package/dist/adapters/file/filesystem.d.ts +3 -3
  8. package/dist/adapters/file/google-cloud-storage.d.ts +3 -3
  9. package/dist/adapters/storage/progres.d.ts +9 -20
  10. package/dist/adapters/storage/progres.js +28 -109
  11. package/dist/adapters/storage/progres.js.map +1 -1
  12. package/dist/adapters/storage/progres.mjs +28 -109
  13. package/dist/adapters/storage/progres.mjs.map +1 -1
  14. package/dist/client.d.ts +3 -3
  15. package/dist/client.js +2 -1
  16. package/dist/client.js.map +1 -1
  17. package/dist/client.mjs +3 -2
  18. package/dist/client.mjs.map +1 -1
  19. package/dist/index.d.ts +3 -3
  20. package/dist/index.js +45 -109
  21. package/dist/index.js.map +1 -1
  22. package/dist/index.mjs +46 -110
  23. package/dist/index.mjs.map +1 -1
  24. package/dist/internals/{base-Cf7WkDhO.d.ts → base-DHkvlTFy.d.ts} +2 -2
  25. package/dist/internals/base-DHkvlTFy.d.ts.map +1 -0
  26. package/dist/internals/{chunk-ONaLyXL0.d.ts → chunk-C7kDLOLD.d.ts} +3 -3
  27. package/dist/internals/chunk-C7kDLOLD.d.ts.map +1 -0
  28. package/dist/internals/{index-DByHjIHI.js → index-BRzKDwPs.js} +64 -22
  29. package/dist/internals/index-BRzKDwPs.js.map +1 -0
  30. package/dist/internals/{index-DI-jPA6f.d.ts → index-CKcESGqE.d.ts} +3 -3
  31. package/dist/internals/index-CKcESGqE.d.ts.map +1 -0
  32. package/dist/internals/{index-C4vwSN74.js → index-CkAvNaAe.js} +240 -1
  33. package/dist/internals/index-CkAvNaAe.js.map +1 -0
  34. package/dist/internals/{index-DtCgllhg.mjs → index-DAkcqabS.mjs} +64 -22
  35. package/dist/internals/index-DAkcqabS.mjs.map +1 -0
  36. package/dist/internals/{index-Blw7vAq5.mjs → index-DlY33lfO.mjs} +240 -1
  37. package/dist/internals/index-DlY33lfO.mjs.map +1 -0
  38. package/dist/internals/{index-JdEs5VLY.d.ts → index-PLz89AWF.d.ts} +23 -31
  39. package/dist/internals/index-PLz89AWF.d.ts.map +1 -0
  40. package/dist/internals/{random-Dk3OhDNU.js → random-B0V0EnjP.js} +2 -2
  41. package/dist/internals/random-B0V0EnjP.js.map +1 -0
  42. package/dist/internals/{random-6nHcBOxn.mjs → random-ZgzzM5v_.mjs} +2 -2
  43. package/dist/internals/random-ZgzzM5v_.mjs.map +1 -0
  44. package/package.json +1 -1
  45. package/dist/internals/base-Cf7WkDhO.d.ts.map +0 -1
  46. package/dist/internals/chunk-ONaLyXL0.d.ts.map +0 -1
  47. package/dist/internals/index-Blw7vAq5.mjs.map +0 -1
  48. package/dist/internals/index-C4vwSN74.js.map +0 -1
  49. package/dist/internals/index-DByHjIHI.js.map +0 -1
  50. package/dist/internals/index-DI-jPA6f.d.ts.map +0 -1
  51. package/dist/internals/index-DtCgllhg.mjs.map +0 -1
  52. package/dist/internals/index-JdEs5VLY.d.ts.map +0 -1
  53. package/dist/internals/random-6nHcBOxn.mjs.map +0 -1
  54. package/dist/internals/random-Dk3OhDNU.js.map +0 -1
@@ -1,5 +1,6 @@
1
1
  import _ from 'lodash';
2
2
  import { m as isValue } from './index-al1N-qi7.mjs';
3
+ import Decimal from 'decimal.js';
3
4
 
4
5
  //
5
6
  // keys.ts
@@ -55,6 +56,127 @@ const TDistanceKeys = [
55
56
  '$rectilinearDistance',
56
57
  ];
57
58
 
59
+ //
60
+ // utils.ts
61
+ //
62
+ // The MIT License
63
+ // Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.
64
+ //
65
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
66
+ // of this software and associated documentation files (the "Software"), to deal
67
+ // in the Software without restriction, including without limitation the rights
68
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
69
+ // copies of the Software, and to permit persons to whom the Software is
70
+ // furnished to do so, subject to the following conditions:
71
+ //
72
+ // The above copyright notice and this permission notice shall be included in
73
+ // all copies or substantial portions of the Software.
74
+ //
75
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
76
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
77
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
78
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
79
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
80
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
81
+ // THE SOFTWARE.
82
+ //
83
+ const isNum = (x) => _.isNumber(x) || x instanceof BigInt || x instanceof Decimal;
84
+ const equalNum = (lhs, rhs) => {
85
+ if (lhs instanceof Decimal && rhs instanceof Decimal) {
86
+ return lhs.equals(rhs);
87
+ }
88
+ else if (lhs instanceof Decimal) {
89
+ return lhs.equals(rhs instanceof BigInt ? rhs.toString() : rhs);
90
+ }
91
+ else if (rhs instanceof Decimal) {
92
+ return rhs.equals(lhs instanceof BigInt ? lhs.toString() : lhs);
93
+ }
94
+ else {
95
+ return lhs === rhs;
96
+ }
97
+ };
98
+ const lessNum = (lhs, rhs) => {
99
+ if (lhs instanceof Decimal && rhs instanceof Decimal) {
100
+ return lhs.lessThan(rhs);
101
+ }
102
+ else if (lhs instanceof Decimal) {
103
+ return lhs.lessThan(rhs instanceof BigInt ? rhs.toString() : rhs);
104
+ }
105
+ else if (rhs instanceof Decimal) {
106
+ return rhs.greaterThan(lhs instanceof BigInt ? lhs.toString() : lhs);
107
+ }
108
+ else {
109
+ return lhs < rhs;
110
+ }
111
+ };
112
+ const equal = (lhs, rhs) => {
113
+ if (_.isNil(lhs) && _.isNil(rhs))
114
+ return true;
115
+ if (isNum(lhs) && isNum(rhs))
116
+ return equalNum(lhs, rhs);
117
+ return _.isEqual(lhs, rhs);
118
+ };
119
+ const lessThan = (lhs, rhs) => {
120
+ if (_.isString(lhs) && _.isString(rhs))
121
+ return lhs < rhs;
122
+ if (_.isDate(lhs) && _.isDate(rhs))
123
+ return lhs < rhs;
124
+ if (isNum(lhs) && isNum(rhs))
125
+ return lessNum(lhs, rhs);
126
+ if (_.isArray(lhs) && _.isArray(rhs)) {
127
+ for (const i of _.range(Math.min(lhs.length, rhs.length))) {
128
+ if (lessThan(lhs[i], rhs[i]))
129
+ return true;
130
+ if (greaterThan(lhs[i], rhs[i]))
131
+ return false;
132
+ }
133
+ return lhs.length < rhs.length;
134
+ }
135
+ return false;
136
+ };
137
+ const greaterThan = (lhs, rhs) => {
138
+ return lessThan(rhs, lhs);
139
+ };
140
+ const lessThanOrEqual = (lhs, rhs) => {
141
+ return equal(lhs, rhs) || lessThan(lhs, rhs);
142
+ };
143
+ const greaterThanOrEqual = (lhs, rhs) => {
144
+ return lessThanOrEqual(rhs, lhs);
145
+ };
146
+ const isSubset = (lhs, rhs) => {
147
+ return _.some(lhs, l => _.every(rhs, r => equal(l, r)));
148
+ };
149
+ const isSuperset = (lhs, rhs) => {
150
+ return isSubset(rhs, lhs);
151
+ };
152
+ const isIntersect = (lhs, rhs) => {
153
+ return _.some(lhs, l => _.some(rhs, r => equal(l, r)));
154
+ };
155
+ const innerProduct = (v1, v2) => {
156
+ if (v1.length !== v2.length)
157
+ throw Error('Invalid comparison of two vectors of different lengths');
158
+ return _.sumBy(_.zip(v1, v2), ([a, b]) => (a - b) ** 2);
159
+ };
160
+ const distance = (v1, v2) => {
161
+ return Math.sqrt(innerProduct(v1, v2));
162
+ };
163
+ const rectilinearDistance = (v1, v2) => {
164
+ if (v1.length !== v2.length)
165
+ throw Error('Invalid comparison of two vectors of different lengths');
166
+ return _.sumBy(_.zip(v1, v2), ([a, b]) => Math.abs(a - b));
167
+ };
168
+ const cosine = (v1, v2) => {
169
+ if (v1.length !== v2.length)
170
+ throw Error('Invalid comparison of two vectors of different lengths');
171
+ const s1 = _.sumBy(v1, v => v ** 2);
172
+ const s2 = _.sumBy(v2, v => v ** 2);
173
+ if (s1 === 0 && s2 === 0)
174
+ return 1;
175
+ if (s1 === 0 || s2 === 0)
176
+ return 0;
177
+ return _.sumBy(_.zip(v1, v2), ([a, b]) => a * b) / Math.sqrt(s1 * s2);
178
+ };
179
+
58
180
  //
59
181
  // expressions.ts
60
182
  //
@@ -135,6 +257,9 @@ class QueryExpression {
135
257
  mapKey(callback) {
136
258
  return this;
137
259
  }
260
+ eval(value) {
261
+ return true;
262
+ }
138
263
  }
139
264
  class QueryCoditionalExpression extends QueryExpression {
140
265
  type;
@@ -163,6 +288,13 @@ class QueryCoditionalExpression extends QueryExpression {
163
288
  mapKey(callback) {
164
289
  return new QueryCoditionalExpression(this.type, _.map(this.exprs, x => x.mapKey(callback)));
165
290
  }
291
+ eval(value) {
292
+ switch (this.type) {
293
+ case '$and': return _.every(this.exprs, expr => expr.eval(value));
294
+ case '$nor': return !_.some(this.exprs, expr => expr.eval(value));
295
+ case '$or': return _.some(this.exprs, expr => expr.eval(value));
296
+ }
297
+ }
166
298
  }
167
299
  class QueryComparisonExpression extends QueryExpression {
168
300
  type;
@@ -186,6 +318,16 @@ class QueryComparisonExpression extends QueryExpression {
186
318
  mapKey(callback) {
187
319
  return new QueryComparisonExpression(this.type, this.left.mapKey(callback), this.right.mapKey(callback));
188
320
  }
321
+ eval(value) {
322
+ switch (this.type) {
323
+ case '$eq': return equal(this.left.eval(value), this.right.eval(value));
324
+ case '$gt': return greaterThan(this.left.eval(value), this.right.eval(value));
325
+ case '$gte': return greaterThanOrEqual(this.left.eval(value), this.right.eval(value));
326
+ case '$lt': return lessThan(this.left.eval(value), this.right.eval(value));
327
+ case '$lte': return lessThanOrEqual(this.left.eval(value), this.right.eval(value));
328
+ case '$ne': return !equal(this.left.eval(value), this.right.eval(value));
329
+ }
330
+ }
189
331
  }
190
332
  class QueryNotExpression extends QueryExpression {
191
333
  expr;
@@ -202,6 +344,9 @@ class QueryNotExpression extends QueryExpression {
202
344
  mapKey(callback) {
203
345
  return new QueryNotExpression(this.expr.mapKey(callback));
204
346
  }
347
+ eval(value) {
348
+ return !this.expr.eval(value);
349
+ }
205
350
  }
206
351
  class QueryArrayExpression extends QueryExpression {
207
352
  exprs;
@@ -218,6 +363,9 @@ class QueryArrayExpression extends QueryExpression {
218
363
  mapKey(callback) {
219
364
  return new QueryArrayExpression(_.map(this.exprs, x => x.mapKey(callback)));
220
365
  }
366
+ eval(value) {
367
+ return _.map(this.exprs, x => x.eval(value));
368
+ }
221
369
  }
222
370
  class QueryDistanceExpression extends QueryExpression {
223
371
  type;
@@ -241,6 +389,21 @@ class QueryDistanceExpression extends QueryExpression {
241
389
  mapKey(callback) {
242
390
  return new QueryDistanceExpression(this.type, _.map(this.left, x => x.mapKey(callback)), _.map(this.right, x => x.mapKey(callback)));
243
391
  }
392
+ eval(value) {
393
+ const left = this.left.length === 1 ? this.left[0].eval(value) : _.map(this.left, x => x.eval(value));
394
+ const right = this.right.length === 1 ? this.right[0].eval(value) : _.map(this.right, x => x.eval(value));
395
+ if (!_.isArray(left) || !_.every(left, x => _.isFinite(x)))
396
+ throw Error('Invalid vectors');
397
+ if (!_.isArray(right) || !_.every(right, x => _.isFinite(x)))
398
+ throw Error('Invalid vectors');
399
+ switch (this.type) {
400
+ case '$distance': return distance(left, right);
401
+ case '$innerProduct': return innerProduct(left, right);
402
+ case '$negInnerProduct': return -innerProduct(left, right);
403
+ case '$cosineDistance': return cosine(left, right);
404
+ case '$rectilinearDistance': return rectilinearDistance(left, right);
405
+ }
406
+ }
244
407
  }
245
408
  class QueryKeyExpression extends QueryExpression {
246
409
  key;
@@ -254,6 +417,9 @@ class QueryKeyExpression extends QueryExpression {
254
417
  mapKey(callback) {
255
418
  return new QueryKeyExpression(callback(this.key));
256
419
  }
420
+ eval(value) {
421
+ return _.get(value, this.key);
422
+ }
257
423
  }
258
424
  class QueryValueExpression extends QueryExpression {
259
425
  value;
@@ -261,6 +427,9 @@ class QueryValueExpression extends QueryExpression {
261
427
  super();
262
428
  this.value = value;
263
429
  }
430
+ eval(value) {
431
+ return value;
432
+ }
264
433
  }
265
434
 
266
435
  //
@@ -350,6 +519,9 @@ class QuerySelector {
350
519
  keyPaths() {
351
520
  return [];
352
521
  }
522
+ eval(value) {
523
+ return true;
524
+ }
353
525
  }
354
526
  class QueryCoditionalSelector extends QuerySelector {
355
527
  type;
@@ -375,6 +547,13 @@ class QueryCoditionalSelector extends QuerySelector {
375
547
  keyPaths() {
376
548
  return _.uniq(_.flatMap(this.exprs, x => x.keyPaths()));
377
549
  }
550
+ eval(value) {
551
+ switch (this.type) {
552
+ case '$and': return _.every(this.exprs, expr => expr.eval(value));
553
+ case '$nor': return !_.some(this.exprs, expr => expr.eval(value));
554
+ case '$or': return _.some(this.exprs, expr => expr.eval(value));
555
+ }
556
+ }
378
557
  }
379
558
  class FieldSelectorExpression {
380
559
  type;
@@ -456,6 +635,60 @@ class FieldSelectorExpression {
456
635
  }
457
636
  return field ? result.map(x => `${field}.${x}`) : result;
458
637
  }
638
+ eval(value) {
639
+ if (_.includes(TComparisonKeys, this.type)) {
640
+ switch (this.type) {
641
+ case '$eq': return equal(value, this.value);
642
+ case '$gt': return greaterThan(value, this.value);
643
+ case '$gte': return greaterThanOrEqual(value, this.value);
644
+ case '$lt': return lessThan(value, this.value);
645
+ case '$lte': return lessThanOrEqual(value, this.value);
646
+ case '$ne': return !equal(value, this.value);
647
+ }
648
+ }
649
+ else if (_.includes(TValueListKeys, this.type) || _.includes(TValueSetKeys, this.type)) {
650
+ switch (this.type) {
651
+ case '$in': return _.isArray(value) && _.some(value, x => equal(x, this.value));
652
+ case '$nin': return _.isArray(value) && !_.some(value, x => equal(x, this.value));
653
+ case '$subset': return _.isArray(value) && _.isArray(this.value) && isSubset(value, this.value);
654
+ case '$superset': return _.isArray(value) && _.isArray(this.value) && isSuperset(value, this.value);
655
+ case '$intersect': return _.isArray(value) && _.isArray(this.value) && isIntersect(value, this.value);
656
+ }
657
+ }
658
+ else {
659
+ switch (this.type) {
660
+ case '$not':
661
+ return this.value instanceof FieldSelectorExpression && !this.value.eval(value);
662
+ case '$pattern':
663
+ if (_.isString(this.value)) {
664
+ return _.isString(value) && value.includes(this.value);
665
+ }
666
+ if (_.isRegExp(this.value)) {
667
+ return _.isString(value) && !!value.match(this.value);
668
+ }
669
+ return false;
670
+ case '$starts':
671
+ return _.isString(this.value) && _.isString(value) && value.startsWith(this.value);
672
+ case '$ends':
673
+ return _.isString(this.value) && _.isString(value) && value.endsWith(this.value);
674
+ case '$size':
675
+ return _.isNumber(this.value) && (_.isString(value) || _.isArray(value)) && value.length === this.value;
676
+ case '$empty':
677
+ return _.isBoolean(this.value) && (_.isString(value) || _.isArray(value)) && _.isEmpty(value);
678
+ case '$every':
679
+ {
680
+ const expr = this.value;
681
+ return expr instanceof QuerySelector && _.isArray(value) && _.every(value, x => expr.eval(x));
682
+ }
683
+ case '$some':
684
+ {
685
+ const expr = this.value;
686
+ return expr instanceof QuerySelector && _.isArray(value) && _.some(value, x => expr.eval(x));
687
+ }
688
+ }
689
+ }
690
+ throw Error('Invalid expression');
691
+ }
459
692
  }
460
693
  class QueryFieldSelector extends QuerySelector {
461
694
  field;
@@ -471,6 +704,9 @@ class QueryFieldSelector extends QuerySelector {
471
704
  keyPaths() {
472
705
  return this.field === '$' ? this.expr.keyPaths() : [this.field, ...this.expr.keyPaths(this.field)];
473
706
  }
707
+ eval(value) {
708
+ return this.expr.eval(this.field === '$' ? value : _.get(value, this.field));
709
+ }
474
710
  }
475
711
  class QueryExpressionSelector extends QuerySelector {
476
712
  expr;
@@ -484,7 +720,10 @@ class QueryExpressionSelector extends QuerySelector {
484
720
  keyPaths() {
485
721
  return this.expr.keyPaths();
486
722
  }
723
+ eval(value) {
724
+ return !!this.expr.eval(value);
725
+ }
487
726
  }
488
727
 
489
728
  export { FieldSelectorExpression as F, QuerySelector as Q, QueryCoditionalSelector as a, QueryFieldSelector as b, QueryExpressionSelector as c, QueryDistanceExpression as d, QueryCoditionalExpression as e, QueryComparisonExpression as f, QueryNotExpression as g, QueryArrayExpression as h, QueryValueExpression as i, QueryKeyExpression as j, QueryExpression as k };
490
- //# sourceMappingURL=index-Blw7vAq5.mjs.map
729
+ //# sourceMappingURL=index-DlY33lfO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DlY33lfO.mjs","sources":["../../../src/internals/query/types/keys.ts","../../../src/server/query/dispatcher/parser/utils.ts","../../../src/server/query/dispatcher/parser/expressions.ts","../../../src/internals/query/types/selectors.ts","../../../src/server/query/dispatcher/parser/index.ts"],"sourcesContent":["//\n// keys.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nexport const TComparisonKeys = [\n '$eq',\n '$gt',\n '$gte',\n '$lt',\n '$lte',\n '$ne',\n] as const;\n\nexport const TValueListKeys = [\n '$in',\n '$nin',\n] as const;\n\nexport const TValueSetKeys = [\n '$subset',\n '$superset',\n '$intersect',\n] as const;\n\nexport const TConditionalKeys = [\n '$and',\n '$nor',\n '$or',\n] as const;\n\nexport const TDistanceKeys = [\n '$distance',\n '$innerProduct',\n '$negInnerProduct',\n '$cosineDistance',\n '$rectilinearDistance',\n] as const;\n","//\n// utils.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport Decimal from 'decimal.js';\nimport { TNumber } from '../../../../common';\n\nconst isNum = (x: any): x is TNumber => _.isNumber(x) || x instanceof BigInt || x instanceof Decimal;\n\nconst equalNum = (lhs: TNumber, rhs: TNumber) => {\n if (lhs instanceof Decimal && rhs instanceof Decimal) {\n return lhs.equals(rhs);\n } else if (lhs instanceof Decimal) {\n return lhs.equals(rhs instanceof BigInt ? rhs.toString() : rhs);\n } else if (rhs instanceof Decimal) {\n return rhs.equals(lhs instanceof BigInt ? lhs.toString() : lhs);\n } else {\n return lhs === rhs;\n }\n}\n\nconst lessNum = (lhs: TNumber, rhs: TNumber) => {\n if (lhs instanceof Decimal && rhs instanceof Decimal) {\n return lhs.lessThan(rhs);\n } else if (lhs instanceof Decimal) {\n return lhs.lessThan(rhs instanceof BigInt ? rhs.toString() : rhs);\n } else if (rhs instanceof Decimal) {\n return rhs.greaterThan(lhs instanceof BigInt ? lhs.toString() : lhs);\n } else {\n return lhs < rhs;\n }\n}\n\nexport const equal = (lhs: any, rhs: any) => {\n if (_.isNil(lhs) && _.isNil(rhs)) return true;\n if (isNum(lhs) && isNum(rhs)) return equalNum(lhs, rhs);\n return _.isEqual(lhs, rhs);\n};\n\nexport const lessThan = (lhs: any, rhs: any) => {\n if (_.isString(lhs) && _.isString(rhs)) return lhs < rhs;\n if (_.isDate(lhs) && _.isDate(rhs)) return lhs < rhs;\n if (isNum(lhs) && isNum(rhs)) return lessNum(lhs, rhs);\n if (_.isArray(lhs) && _.isArray(rhs)) {\n for (const i of _.range(Math.min(lhs.length, rhs.length))) {\n if (lessThan(lhs[i], rhs[i])) return true;\n if (greaterThan(lhs[i], rhs[i])) return false;\n }\n return lhs.length < rhs.length;\n }\n return false;\n};\n\nexport const greaterThan = (lhs: any, rhs: any) => {\n return lessThan(rhs, lhs);\n};\n\nexport const lessThanOrEqual = (lhs: any, rhs: any) => {\n return equal(lhs, rhs) || lessThan(lhs, rhs);\n};\n\nexport const greaterThanOrEqual = (lhs: any, rhs: any) => {\n return lessThanOrEqual(rhs, lhs);\n};\n\nexport const isSubset = (lhs: any[], rhs: any[]) => {\n return _.some(lhs, l => _.every(rhs, r => equal(l, r)));\n}\n\nexport const isSuperset = (lhs: any[], rhs: any[]) => {\n return isSubset(rhs, lhs);\n}\n\nexport const isIntersect = (lhs: any[], rhs: any[]) => {\n return _.some(lhs, l => _.some(rhs, r => equal(l, r)));\n}\n\nexport const innerProduct = (v1: number[], v2: number[]) => {\n if (v1.length !== v2.length) throw Error('Invalid comparison of two vectors of different lengths');\n return _.sumBy(_.zip(v1, v2), ([a, b]) => (a! - b!) ** 2);\n};\n\nexport const distance = (v1: number[], v2: number[]) => {\n return Math.sqrt(innerProduct(v1, v2));\n};\n\nexport const rectilinearDistance = (v1: number[], v2: number[]) => {\n if (v1.length !== v2.length) throw Error('Invalid comparison of two vectors of different lengths');\n return _.sumBy(_.zip(v1, v2), ([a, b]) => Math.abs(a! - b!));\n};\n\nexport const cosine = (v1: number[], v2: number[]) => {\n if (v1.length !== v2.length) throw Error('Invalid comparison of two vectors of different lengths');\n const s1 = _.sumBy(v1, v => v ** 2);\n const s2 = _.sumBy(v2, v => v ** 2);\n if (s1 === 0 && s2 === 0) return 1;\n if (s1 === 0 || s2 === 0) return 0;\n return _.sumBy(_.zip(v1, v2), ([a, b]) => a! * b!) / Math.sqrt(s1 * s2);\n};\n","//\n// expressions.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { TExpression } from '../../../../internals/query/types/expressions';\nimport { TComparisonKeys, TConditionalKeys, TDistanceKeys } from '../../../../internals/query/types/keys';\nimport { isValue } from '../../../../internals/object';\nimport { TValue } from '../../../../internals/types';\nimport { cosine, distance, equal, greaterThan, greaterThanOrEqual, innerProduct, lessThan, lessThanOrEqual, rectilinearDistance } from './utils';\n\nexport class QueryExpression {\n\n static decode(expr: _.Many<TExpression>, dollerSign: boolean): QueryExpression {\n const exprs: QueryExpression[] = [];\n for (const selector of _.castArray(expr)) {\n for (const [key, query] of _.toPairs(selector)) {\n if (_.includes(TConditionalKeys, key) && _.isArray(query)) {\n exprs.push(new QueryCoditionalExpression(key as any, _.map(query, x => QueryExpression.decode(x as any, dollerSign))));\n } else if (_.includes(TComparisonKeys, key) && _.isArray(query) && query.length === 2) {\n const [left, right] = query;\n exprs.push(new QueryComparisonExpression(key as any, QueryExpression.decode(left as any, dollerSign), QueryExpression.decode(right as any, dollerSign)));\n } else if (_.includes(TDistanceKeys, key) && _.isArray(query) && query.length === 2) {\n const [left, right] = query;\n const _left = _.isArray(left) ? _.map(left, x => QueryExpression.decode(x as any, dollerSign)) : QueryExpression.decode(left as any, dollerSign);\n const _right = _.isArray(right) ? _.map(right, x => QueryExpression.decode(x as any, dollerSign)) : QueryExpression.decode(right as any, dollerSign);\n exprs.push(new QueryDistanceExpression(key as any, _.castArray(_left), _.castArray(_right)));\n } else if (key === '$not') {\n exprs.push(new QueryNotExpression(QueryExpression.decode(query as any, dollerSign)));\n } else if (key === '$array' && _.isArray(query)) {\n exprs.push(new QueryArrayExpression(_.map(query, x => QueryExpression.decode(x as any, dollerSign))));\n } else if (key === '$key' && _.isString(query)) {\n if (dollerSign && query === '$') {\n exprs.push(new QueryKeyExpression(query));\n } else if (!query.startsWith('$')) {\n exprs.push(new QueryKeyExpression(query));\n } else {\n throw Error('Invalid expression');\n }\n } else if (key === '$value' && isValue(query)) {\n exprs.push(new QueryValueExpression(query));\n } else {\n throw Error('Invalid expression');\n }\n }\n }\n if (_.isEmpty(exprs)) return new QueryExpression;\n return (exprs.length === 1 ? exprs[0] : new QueryCoditionalExpression('$and', exprs)).simplify();\n }\n\n simplify(): QueryExpression {\n return this;\n }\n\n keyPaths(): string[] {\n return [];\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return this;\n }\n\n eval(value: any): any {\n return true;\n }\n}\n\nexport class QueryCoditionalExpression extends QueryExpression {\n\n type: typeof TConditionalKeys[number];\n exprs: QueryExpression[];\n\n constructor(type: typeof TConditionalKeys[number], exprs: QueryExpression[]) {\n super();\n this.type = type;\n this.exprs = exprs;\n }\n\n simplify() {\n if (_.isEmpty(this.exprs)) return new QueryExpression;\n if (this.exprs.length === 1 && this.type !== '$nor') return this.exprs[0];\n switch (this.type) {\n case '$and':\n return new QueryCoditionalExpression(this.type, _.flatMap(\n this.exprs, x => x instanceof QueryCoditionalExpression && x.type === '$and' ? _.map(x.exprs, y => y.simplify()) : [x.simplify()]\n )) as QueryExpression;\n case '$nor':\n case '$or':\n return new QueryCoditionalExpression(this.type, _.flatMap(\n this.exprs, x => x instanceof QueryCoditionalExpression && x.type === '$or' ? _.map(x.exprs, y => y.simplify()) : [x.simplify()]\n )) as QueryExpression;\n }\n }\n\n keyPaths(): string[] {\n return _.uniq(_.flatMap(this.exprs, x => x.keyPaths()));\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryCoditionalExpression(this.type, _.map(this.exprs, x => x.mapKey(callback)));\n }\n\n eval(value: any) {\n switch (this.type) {\n case '$and': return _.every(this.exprs, expr => expr.eval(value));\n case '$nor': return !_.some(this.exprs, expr => expr.eval(value));\n case '$or': return _.some(this.exprs, expr => expr.eval(value));\n }\n }\n}\n\nexport class QueryComparisonExpression extends QueryExpression {\n\n type: typeof TComparisonKeys[number];\n left: QueryExpression;\n right: QueryExpression;\n\n constructor(type: typeof TComparisonKeys[number], left: QueryExpression, right: QueryExpression) {\n super();\n this.type = type;\n this.left = left;\n this.right = right;\n }\n\n simplify() {\n return new QueryComparisonExpression(this.type, this.left.simplify(), this.right.simplify());\n }\n\n keyPaths(): string[] {\n return _.uniq([\n ...this.left.keyPaths(),\n ...this.right.keyPaths(),\n ]);\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryComparisonExpression(this.type, this.left.mapKey(callback), this.right.mapKey(callback));\n }\n\n eval(value: any) {\n switch (this.type) {\n case '$eq': return equal(this.left.eval(value), this.right.eval(value));\n case '$gt': return greaterThan(this.left.eval(value), this.right.eval(value));\n case '$gte': return greaterThanOrEqual(this.left.eval(value), this.right.eval(value));\n case '$lt': return lessThan(this.left.eval(value), this.right.eval(value));\n case '$lte': return lessThanOrEqual(this.left.eval(value), this.right.eval(value));\n case '$ne': return !equal(this.left.eval(value), this.right.eval(value));\n }\n }\n}\n\nexport class QueryNotExpression extends QueryExpression {\n\n expr: QueryExpression;\n\n constructor(expr: QueryExpression) {\n super();\n this.expr = expr;\n }\n\n simplify() {\n return new QueryNotExpression(this.expr.simplify());\n }\n\n keyPaths(): string[] {\n return this.expr.keyPaths();\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryNotExpression(this.expr.mapKey(callback));\n }\n\n eval(value: any) {\n return !this.expr.eval(value);\n }\n}\n\nexport class QueryArrayExpression extends QueryExpression {\n\n exprs: QueryExpression[];\n\n constructor(exprs: QueryExpression[]) {\n super();\n this.exprs = exprs;\n }\n\n simplify() {\n return new QueryArrayExpression(_.map(this.exprs, x => x.simplify())) as QueryExpression;\n }\n\n keyPaths(): string[] {\n return _.uniq(_.flatMap(this.exprs, x => x.keyPaths()));\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryArrayExpression(_.map(this.exprs, x => x.mapKey(callback)));\n }\n\n eval(value: any) {\n return _.map(this.exprs, x => x.eval(value));\n }\n}\n\nexport class QueryDistanceExpression extends QueryExpression {\n\n type: typeof TDistanceKeys[number];\n left: QueryExpression[];\n right: QueryExpression[];\n\n constructor(type: typeof TDistanceKeys[number], left: QueryExpression[], right: QueryExpression[]) {\n super();\n this.type = type;\n this.left = left;\n this.right = right;\n }\n\n simplify() {\n return new QueryDistanceExpression(this.type, _.map(this.left, x => x.simplify()), _.map(this.right, x => x.simplify()));\n }\n\n keyPaths(): string[] {\n return _.uniq([\n ..._.flatMap(this.left, x => x.keyPaths()),\n ..._.flatMap(this.right, x => x.keyPaths()),\n ]);\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryDistanceExpression(this.type, _.map(this.left, x => x.mapKey(callback)), _.map(this.right, x => x.mapKey(callback)));\n }\n\n eval(value: any) {\n const left = this.left.length === 1 ? this.left[0].eval(value) : _.map(this.left, x => x.eval(value));\n const right = this.right.length === 1 ? this.right[0].eval(value) : _.map(this.right, x => x.eval(value));\n if (!_.isArray(left) || !_.every(left, x => _.isFinite(x))) throw Error('Invalid vectors');\n if (!_.isArray(right) || !_.every(right, x => _.isFinite(x))) throw Error('Invalid vectors');\n switch (this.type) {\n case '$distance': return distance(left, right);\n case '$innerProduct': return innerProduct(left, right);\n case '$negInnerProduct': return -innerProduct(left, right);\n case '$cosineDistance': return cosine(left, right);\n case '$rectilinearDistance': return rectilinearDistance(left, right);\n }\n }\n}\n\nexport class QueryKeyExpression extends QueryExpression {\n\n key: string;\n\n constructor(key: string) {\n super();\n this.key = key;\n }\n\n keyPaths(): string[] {\n return this.key === '$' ? [] : [this.key];\n }\n\n mapKey(callback: (key: string) => string): QueryExpression {\n return new QueryKeyExpression(callback(this.key));\n }\n\n eval(value: any) {\n return _.get(value, this.key);\n }\n}\n\nexport class QueryValueExpression extends QueryExpression {\n\n value: TValue;\n\n constructor(value: TValue) {\n super();\n this.value = value;\n }\n\n eval(value: any) {\n return value;\n }\n}\n","//\n// selectors.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport { TValue } from '../../types';\nimport { TBooleanExpression } from './expressions';\nimport { TConditionalKeys, TValueListKeys, TValueSetKeys, TComparisonKeys } from './keys';\n\nexport const allFieldQueryKeys = [\n '$not', '$pattern', '$starts', '$ends', '$size', '$empty', '$every', '$some',\n ...TConditionalKeys,\n ...TValueListKeys,\n ...TValueSetKeys\n];\n\ntype TThisQuerySelector = { $?: TFieldQuerySelector; };\n\nexport type TFieldQuerySelector = {\n $not?: TFieldQuerySelector;\n $starts?: string;\n $ends?: string;\n $pattern?: RegExp | string;\n $size?: number;\n $empty?: boolean;\n $every?: TQuerySelector | TThisQuerySelector;\n $some?: TQuerySelector | TThisQuerySelector;\n} & {\n [x in (typeof TComparisonKeys)[number]]?: TValue;\n } & {\n [x in (typeof TValueListKeys)[number]]?: TValue[];\n } & {\n [x in (typeof TValueSetKeys)[number]]?: TValue[];\n };\n\nexport type TCoditionalQuerySelector = {\n [x in (typeof TConditionalKeys)[number]]?: TQuerySelector[];\n};\n\nexport type TQuerySelector = TCoditionalQuerySelector & {\n $expr?: TBooleanExpression\n} | {\n [x: string]: TFieldQuerySelector;\n};\n","//\n// index.ts\n//\n// The MIT License\n// Copyright (c) 2021 - 2025 O2ter Limited. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\nimport _ from 'lodash';\nimport { QueryExpression } from './expressions';\nimport { TFieldQuerySelector, TQuerySelector, allFieldQueryKeys } from '../../../../internals/query/types/selectors';\nimport { TComparisonKeys, TConditionalKeys, TValueListKeys, TValueSetKeys } from '../../../../internals/query/types/keys';\nimport { isValue } from '../../../../internals/object';\nimport { TValue } from '../../../../internals/types';\nimport { equal, greaterThan, greaterThanOrEqual, isIntersect, isSubset, isSuperset, lessThan, lessThanOrEqual } from './utils';\n\nexport class QuerySelector {\n\n static decode(selectors: _.Many<TQuerySelector>, dollerSign: boolean = false): QuerySelector {\n const exprs: QuerySelector[] = [];\n for (const selector of _.castArray(selectors)) {\n for (const [key, query] of _.toPairs(selector)) {\n if (_.includes(TConditionalKeys, key) && _.isArray(query)) {\n exprs.push(new QueryCoditionalSelector(key as any, _.map(query, x => QuerySelector.decode(x, dollerSign))));\n } else if (key === '$expr') {\n exprs.push(new QueryExpressionSelector(QueryExpression.decode(query as any, dollerSign)));\n } else if (dollerSign && key === '$' && !_.isArray(query)) {\n exprs.push(new QueryFieldSelector(key, FieldSelectorExpression.decode(query)));\n } else if (!key.startsWith('$') && !_.isArray(query)) {\n exprs.push(new QueryFieldSelector(key, FieldSelectorExpression.decode(query)));\n } else {\n throw Error('Invalid expression');\n }\n }\n }\n if (_.isEmpty(exprs)) return new QuerySelector;\n return (exprs.length === 1 ? exprs[0] : new QueryCoditionalSelector('$and', exprs)).simplify();\n }\n\n simplify(): QuerySelector {\n return this;\n }\n\n keyPaths(): string[] {\n return [];\n }\n\n eval(value: any): boolean {\n return true;\n }\n}\n\nexport class QueryCoditionalSelector extends QuerySelector {\n\n type: typeof TConditionalKeys[number];\n exprs: QuerySelector[];\n\n constructor(type: typeof TConditionalKeys[number], exprs: QuerySelector[]) {\n super();\n this.type = type;\n this.exprs = exprs;\n }\n\n simplify() {\n if (_.isEmpty(this.exprs)) return new QuerySelector;\n if (this.exprs.length === 1 && this.type !== '$nor') return this.exprs[0];\n switch (this.type) {\n case '$and':\n return new QueryCoditionalSelector(this.type, _.flatMap(\n this.exprs, x => x instanceof QueryCoditionalSelector && x.type === '$and' ? _.map(x.exprs, y => y.simplify()) : [x.simplify()]\n )) as QuerySelector;\n case '$nor':\n case '$or':\n return new QueryCoditionalSelector(this.type, _.flatMap(\n this.exprs, x => x instanceof QueryCoditionalSelector && x.type === '$or' ? _.map(x.exprs, y => y.simplify()) : [x.simplify()]\n )) as QuerySelector;\n }\n }\n\n keyPaths(): string[] {\n return _.uniq(_.flatMap(this.exprs, x => x.keyPaths()));\n }\n\n eval(value: any) {\n switch (this.type) {\n case '$and': return _.every(this.exprs, expr => expr.eval(value));\n case '$nor': return !_.some(this.exprs, expr => expr.eval(value));\n case '$or': return _.some(this.exprs, expr => expr.eval(value));\n }\n }\n}\n\nexport class FieldSelectorExpression {\n\n type: keyof TFieldQuerySelector;\n value: QuerySelector | FieldSelectorExpression | RegExp | TValue;\n\n constructor(type: keyof TFieldQuerySelector, value: QuerySelector | FieldSelectorExpression | RegExp | TValue) {\n this.type = type;\n this.value = value;\n }\n\n static decode(selector: TFieldQuerySelector): FieldSelectorExpression {\n for (const [type, expr] of _.toPairs(selector)) {\n if (_.includes(TComparisonKeys, type)) {\n if (!isValue(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type as any, expr);\n } else if (_.includes(TValueListKeys, type) || _.includes(TValueSetKeys, type)) {\n if (!isValue(expr) || !_.isArray(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type as any, expr);\n } else {\n switch (type) {\n case '$not':\n {\n const _expr = expr ? { ...expr as any } : {};\n const keys = _.keys(_expr);\n if (keys.length !== 1 && !allFieldQueryKeys.includes(keys[0])) throw Error('Invalid expression');\n return new FieldSelectorExpression(type, FieldSelectorExpression.decode(_expr));\n }\n case '$pattern':\n if (!_.isString(expr) && !_.isRegExp(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type, expr);\n case '$starts':\n case '$ends':\n if (!_.isString(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type, expr);\n case '$size':\n if (!_.isNumber(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type, expr);\n case '$empty':\n if (!_.isBoolean(expr)) throw Error('Invalid expression');\n return new FieldSelectorExpression(type, expr);\n case '$every':\n case '$some':\n return new FieldSelectorExpression(type, QuerySelector.decode(expr ? { ...expr as any } : {}, true));\n default: throw Error('Invalid expression');\n }\n }\n }\n throw Error('Invalid expression');\n }\n\n simplify(): FieldSelectorExpression {\n if (this.value instanceof QuerySelector) {\n return new FieldSelectorExpression(this.type, this.value.simplify());\n }\n if (this.value instanceof FieldSelectorExpression) {\n return new FieldSelectorExpression(this.type, this.value.simplify());\n }\n return this;\n }\n\n keyPaths(field?: string): string[] {\n let result: string[] = [];\n if (this.value instanceof QuerySelector) {\n result = this.value.keyPaths();\n } else if (this.value instanceof FieldSelectorExpression) {\n switch (this.type) {\n case '$every':\n case '$some':\n result = this.value.keyPaths();\n default:\n result = this.value.keyPaths();\n }\n }\n return field ? result.map(x => `${field}.${x}`) : result;\n }\n\n eval(value: any): any {\n if (_.includes(TComparisonKeys, this.type)) {\n switch (this.type) {\n case '$eq': return equal(value, this.value);\n case '$gt': return greaterThan(value, this.value);\n case '$gte': return greaterThanOrEqual(value, this.value);\n case '$lt': return lessThan(value, this.value);\n case '$lte': return lessThanOrEqual(value, this.value);\n case '$ne': return !equal(value, this.value);\n }\n } else if (_.includes(TValueListKeys, this.type) || _.includes(TValueSetKeys, this.type)) {\n switch (this.type) {\n case '$in': return _.isArray(value) && _.some(value, x => equal(x, this.value));\n case '$nin': return _.isArray(value) && !_.some(value, x => equal(x, this.value));\n case '$subset': return _.isArray(value) && _.isArray(this.value) && isSubset(value, this.value);\n case '$superset': return _.isArray(value) && _.isArray(this.value) && isSuperset(value, this.value);\n case '$intersect': return _.isArray(value) && _.isArray(this.value) && isIntersect(value, this.value);\n }\n } else {\n switch (this.type) {\n case '$not':\n return this.value instanceof FieldSelectorExpression && !this.value.eval(value);\n case '$pattern':\n if (_.isString(this.value)) {\n return _.isString(value) && value.includes(this.value);\n }\n if (_.isRegExp(this.value)) {\n return _.isString(value) && !!value.match(this.value);\n }\n return false;\n case '$starts':\n return _.isString(this.value) && _.isString(value) && value.startsWith(this.value);\n case '$ends':\n return _.isString(this.value) && _.isString(value) && value.endsWith(this.value);\n case '$size':\n return _.isNumber(this.value) && (_.isString(value) || _.isArray(value)) && value.length === this.value;\n case '$empty':\n return _.isBoolean(this.value) && (_.isString(value) || _.isArray(value)) && _.isEmpty(value);\n case '$every':\n {\n const expr = this.value;\n return expr instanceof QuerySelector && _.isArray(value) && _.every(value, x => expr.eval(x));\n }\n case '$some':\n {\n const expr = this.value;\n return expr instanceof QuerySelector && _.isArray(value) && _.some(value, x => expr.eval(x));\n }\n default: break;\n }\n }\n throw Error('Invalid expression');\n }\n}\n\nexport class QueryFieldSelector extends QuerySelector {\n\n field: string;\n expr: FieldSelectorExpression;\n\n constructor(field: string, expr: FieldSelectorExpression) {\n super();\n this.field = field;\n this.expr = expr;\n }\n\n simplify() {\n return new QueryFieldSelector(this.field, this.expr.simplify());\n }\n\n keyPaths(): string[] {\n return this.field === '$' ? this.expr.keyPaths() : [this.field, ...this.expr.keyPaths(this.field)];\n }\n\n eval(value: any) {\n return this.expr.eval(this.field === '$' ? value : _.get(value, this.field));\n }\n}\n\nexport class QueryExpressionSelector extends QuerySelector {\n\n expr: QueryExpression;\n\n constructor(expr: QueryExpression) {\n super();\n this.expr = expr;\n }\n\n simplify() {\n return new QueryExpressionSelector(this.expr.simplify());\n }\n\n keyPaths(): string[] {\n return this.expr.keyPaths();\n }\n\n eval(value: any) {\n return !!this.expr.eval(value);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -575,28 +575,28 @@ declare abstract class TQuery<T extends string, Ext, M extends boolean> extends
575
575
  * @param options - Extra options for the query.
576
576
  * @returns A promise that resolves to the inserted record.
577
577
  */
578
- abstract insert(attrs: Record<string, TValueWithUndefined>, options?: ExtraOptions<M>): PromiseLike<TObjectType<T, Ext>>;
578
+ insert(attrs: Record<string, TValueWithUndefined>, options?: ExtraOptions<M>): Promise<TObjectType<T, Ext>>;
579
579
  /**
580
580
  * Inserts multiple new records.
581
581
  * @param values - The attributes of the new records.
582
582
  * @param options - Extra options for the query.
583
- * @returns A promise that resolves to the number of inserted records.
583
+ * @returns A promise that resolves to the inserted records.
584
584
  */
585
- abstract insertMany(values: Record<string, TValueWithUndefined>[], options?: ExtraOptions<M>): PromiseLike<number>;
585
+ abstract insertMany(values: Record<string, TValueWithUndefined>[], options?: ExtraOptions<M>): PromiseLike<TObjectType<T, Ext>[]>;
586
586
  /**
587
587
  * Updates a single record.
588
588
  * @param update - The update operations.
589
589
  * @param options - Extra options for the query.
590
590
  * @returns A promise that resolves to the updated record or undefined.
591
591
  */
592
- abstract updateOne(update: Record<string, TUpdateOp>, options?: ExtraOptions<M>): PromiseLike<TObjectType<T, Ext> | undefined>;
592
+ updateOne(update: Record<string, TUpdateOp>, options?: ExtraOptions<M>): Promise<TObjectType<T, Ext> | undefined>;
593
593
  /**
594
594
  * Updates multiple records.
595
595
  * @param update - The update operations.
596
596
  * @param options - Extra options for the query.
597
- * @returns A promise that resolves to the number of updated records.
597
+ * @returns A promise that resolves to the updated records.
598
598
  */
599
- abstract updateMany(update: Record<string, TUpdateOp>, options?: ExtraOptions<M>): PromiseLike<number>;
599
+ abstract updateMany(update: Record<string, TUpdateOp>, options?: ExtraOptions<M>): PromiseLike<TObjectType<T, Ext>[]>;
600
600
  /**
601
601
  * Upserts a single record.
602
602
  * @param update - The update operations.
@@ -604,30 +604,27 @@ declare abstract class TQuery<T extends string, Ext, M extends boolean> extends
604
604
  * @param options - Extra options for the query.
605
605
  * @returns A promise that resolves to the upserted record.
606
606
  */
607
- abstract upsertOne(update: Record<string, TUpdateOp>, setOnInsert: Record<string, TValueWithUndefined>, options?: ExtraOptions<M>): PromiseLike<TObjectType<T, Ext>>;
607
+ upsertOne(update: Record<string, TUpdateOp>, setOnInsert: Record<string, TValueWithUndefined>, options?: ExtraOptions<M>): Promise<TObjectType<T, Ext>>;
608
608
  /**
609
609
  * Upserts multiple records.
610
610
  * @param update - The update operations.
611
611
  * @param setOnInsert - The attributes to set on insert.
612
612
  * @param options - Extra options for the query.
613
- * @returns A promise that resolves to the number of upserted records.
613
+ * @returns A promise that resolves to the upserted records.
614
614
  */
615
- abstract upsertMany(update: Record<string, TUpdateOp>, setOnInsert: Record<string, TValueWithUndefined>, options?: ExtraOptions<M>): PromiseLike<{
616
- updated: number;
617
- inserted: number;
618
- }>;
615
+ abstract upsertMany(update: Record<string, TUpdateOp>, setOnInsert: Record<string, TValueWithUndefined>, options?: ExtraOptions<M>): PromiseLike<TObjectType<T, Ext>[]>;
619
616
  /**
620
617
  * Deletes a single record.
621
618
  * @param options - Extra options for the query.
622
619
  * @returns A promise that resolves to the deleted record or undefined.
623
620
  */
624
- abstract deleteOne(options?: ExtraOptions<M>): PromiseLike<TObjectType<T, Ext> | undefined>;
621
+ deleteOne(options?: ExtraOptions<M>): Promise<TObjectType<T, Ext> | undefined>;
625
622
  /**
626
623
  * Deletes multiple records.
627
624
  * @param options - Extra options for the query.
628
- * @returns A promise that resolves to the number of deleted records.
625
+ * @returns A promise that resolves to the deleted records.
629
626
  */
630
- abstract deleteMany(options?: ExtraOptions<M>): PromiseLike<number>;
627
+ abstract deleteMany(options?: ExtraOptions<M>): PromiseLike<TObjectType<T, Ext>[]>;
631
628
  /**
632
629
  * Adds fields to include in the query.
633
630
  * @param includes - The fields to include.
@@ -923,7 +920,7 @@ declare abstract class ProtoType<Ext> {
923
920
  * @param callback - The callback to call when an event occurs.
924
921
  * @returns An object with a remove function to stop listening.
925
922
  */
926
- abstract listen(callback: (data: EventData) => void): {
923
+ abstract listen(callback: (data: EventData) => void, selector?: TQuerySelector): {
927
924
  remove: VoidFunction;
928
925
  socket?: Socket;
929
926
  };
@@ -1562,12 +1559,14 @@ declare class QueryExpression {
1562
1559
  simplify(): QueryExpression;
1563
1560
  keyPaths(): string[];
1564
1561
  mapKey(callback: (key: string) => string): QueryExpression;
1562
+ eval(value: any): any;
1565
1563
  }
1566
1564
 
1567
1565
  declare class QuerySelector {
1568
1566
  static decode(selectors: _.Many<TQuerySelector>, dollerSign?: boolean): QuerySelector;
1569
1567
  simplify(): QuerySelector;
1570
1568
  keyPaths(): string[];
1569
+ eval(value: any): boolean;
1571
1570
  }
1572
1571
  declare class FieldSelectorExpression {
1573
1572
  type: keyof TFieldQuerySelector;
@@ -1576,13 +1575,13 @@ declare class FieldSelectorExpression {
1576
1575
  static decode(selector: TFieldQuerySelector): FieldSelectorExpression;
1577
1576
  simplify(): FieldSelectorExpression;
1578
1577
  keyPaths(field?: string): string[];
1578
+ eval(value: any): any;
1579
1579
  }
1580
1580
 
1581
1581
  type CommonFindOptions = {
1582
1582
  className: string;
1583
1583
  };
1584
1584
  type FindOptions = CommonFindOptions & TQueryOptions;
1585
- type FindOneOptions = CommonFindOptions & Omit<TQueryOptions, 'skip' | 'limit'>;
1586
1585
  type RelationOptions = {
1587
1586
  relatedBy?: {
1588
1587
  className: string;
@@ -1631,17 +1630,10 @@ interface TStorage {
1631
1630
  random(query: DecodedQuery<FindOptions & RelationOptions>, opts?: TQueryRandomOptions): AsyncIterable<TObject>;
1632
1631
  refs(object: TObject, classNames: string[], roles?: string[]): AsyncIterable<TObject>;
1633
1632
  nonrefs(query: DecodedQuery<FindOptions>): AsyncIterable<TObject>;
1634
- insert(options: InsertOptions, attrs: Record<string, TValueWithUndefined>): PromiseLike<TObject | undefined>;
1635
- insertMany(options: InsertOptions, values: Record<string, TValueWithUndefined>[]): PromiseLike<number>;
1636
- updateOne(query: DecodedQuery<FindOneOptions>, update: Record<string, TUpdateOp>): PromiseLike<TObject | undefined>;
1637
- updateMany(query: DecodedQuery<FindOptions>, update: Record<string, TUpdateOp>): PromiseLike<number>;
1638
- upsertOne(query: DecodedQuery<FindOneOptions>, update: Record<string, TUpdateOp>, setOnInsert: Record<string, TValueWithUndefined>): PromiseLike<TObject | undefined>;
1639
- upsertMany(query: DecodedQuery<FindOptions>, update: Record<string, TUpdateOp>, setOnInsert: Record<string, TValueWithUndefined>): PromiseLike<{
1640
- updated: number;
1641
- inserted: number;
1642
- }>;
1643
- deleteOne(query: DecodedQuery<FindOneOptions>): PromiseLike<TObject | undefined>;
1644
- deleteMany(query: DecodedQuery<FindOptions>): PromiseLike<number>;
1633
+ insert(options: InsertOptions, values: Record<string, TValueWithUndefined>[]): PromiseLike<TObject[]>;
1634
+ update(query: DecodedQuery<FindOptions>, update: Record<string, TUpdateOp>): PromiseLike<TObject[]>;
1635
+ upsert(query: DecodedQuery<FindOptions>, update: Record<string, TUpdateOp>, setOnInsert: Record<string, TValueWithUndefined>): PromiseLike<TObject[]>;
1636
+ delete(query: DecodedQuery<FindOptions>): PromiseLike<TObject[]>;
1645
1637
  lockTable(className: string | string[], update: boolean): Promise<void>;
1646
1638
  withConnection<T>(callback: (connection: TStorage) => PromiseLike<T>): PromiseLike<T>;
1647
1639
  isDuplicateIdError(error: any): boolean;
@@ -1871,12 +1863,12 @@ declare class ProtoService<Ext = any> extends ProtoType<Ext> {
1871
1863
  notify(data: Record<string, TValueWithoutObject> & {
1872
1864
  _rperm?: string[];
1873
1865
  }): Promise<void>;
1874
- listen(callback: (data: EventData) => void): {
1866
+ listen(callback: (data: EventData) => void, selector?: TQuerySelector): {
1875
1867
  remove: VoidFunction;
1876
1868
  };
1877
1869
  refs(object: TObject, options?: ExtraOptions<boolean>): _o2ter_utils_js.AsyncStream<TObjectType<string, Ext>>;
1878
1870
  gc(classNames?: string | string[]): Promise<void>;
1879
1871
  }
1880
1872
 
1881
- export { type TStorage as A, type TransactionOptions as B, type TQueryRandomOptions as C, type DeserializeOptions as D, type ExtraOptions as E, FieldSelectorExpression as F, type TPubSub as G, type TFileInfo as H, type InsertOptions as I, ProtoService as P, QueryExpression as Q, type RelationOptions as R, type SerializeOptions as S, TSchema as T, type TValueWithoutObject as a, type ProtoServiceOptions as b, type ProtoServiceKeyOptions as c, type TFileStorage as d, type TSerializable as e, deserialize as f, type TExtensions as g, TQuery as h, TObject as i, TUser as j, TRole as k, TFile as l, TJob as m, ProtoType as n, type PathName as o, type TObjectType as p, type EventData as q, type TValueWithUndefined as r, serialize as s, type TValue as t, type TUpdateOp as u, QuerySelector as v, type DecodedSortOption as w, type DecodedQuery as x, type FindOptions as y, type FindOneOptions as z };
1882
- //# sourceMappingURL=index-JdEs5VLY.d.ts.map
1873
+ export { type FindOptions as A, type TStorage as B, type TransactionOptions as C, type DeserializeOptions as D, type ExtraOptions as E, FieldSelectorExpression as F, type TQueryRandomOptions as G, type TPubSub as H, type InsertOptions as I, type TFileInfo as J, ProtoService as P, QueryExpression as Q, type RelationOptions as R, type SerializeOptions as S, TSchema as T, type TValueWithoutObject as a, type ProtoServiceOptions as b, type ProtoServiceKeyOptions as c, type TFileStorage as d, type TNumber as e, type TSerializable as f, deserialize as g, type TExtensions as h, TQuery as i, TObject as j, TUser as k, TRole as l, TFile as m, TJob as n, ProtoType as o, type PathName as p, type TObjectType as q, type EventData as r, serialize as s, type TQuerySelector as t, type TValueWithUndefined as u, type TValue as v, type TUpdateOp as w, QuerySelector as x, type DecodedSortOption as y, type DecodedQuery as z };
1874
+ //# sourceMappingURL=index-PLz89AWF.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-PLz89AWF.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var _ = require('lodash');
4
- var index$1 = require('./index-C4vwSN74.js');
4
+ var index$1 = require('./index-CkAvNaAe.js');
5
5
  var index = require('./index-B8TESzd9.js');
6
6
  var _private = require('./private-Ciddhure.js');
7
7
  var cryptoJs = require('@o2ter/crypto-js');
@@ -426,4 +426,4 @@ exports.QueryValidator = QueryValidator;
426
426
  exports.generateId = generateId;
427
427
  exports.resolveColumn = resolveColumn;
428
428
  exports.resolveDataType = resolveDataType;
429
- //# sourceMappingURL=random-Dk3OhDNU.js.map
429
+ //# sourceMappingURL=random-B0V0EnjP.js.map