@livequery/core 2.0.92 → 2.0.98
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/README.md +56 -49
- package/dist/LivequeryCollection.d.ts +19 -17
- package/dist/LivequeryCollection.d.ts.map +1 -1
- package/dist/LivequeryCollection.js +231 -0
- package/dist/LivequeryCollection.js.map +1 -0
- package/dist/LivequeryCore.d.ts +4 -4
- package/dist/LivequeryCore.d.ts.map +1 -1
- package/dist/LivequeryCore.js +337 -0
- package/dist/LivequeryCore.js.map +1 -0
- package/dist/LivequeryDocument.d.ts +2 -2
- package/dist/LivequeryDocument.d.ts.map +1 -1
- package/dist/LivequeryDocument.js +22 -0
- package/dist/LivequeryDocument.js.map +1 -0
- package/dist/LivequeryMemoryStorage.d.ts +2 -2
- package/dist/LivequeryMemoryStorage.d.ts.map +1 -1
- package/dist/LivequeryMemoryStorage.js +89 -0
- package/dist/LivequeryMemoryStorage.js.map +1 -0
- package/dist/LivequeryStorge.d.ts +1 -1
- package/dist/LivequeryStorge.d.ts.map +1 -1
- package/dist/LivequeryStorge.js +2 -0
- package/dist/LivequeryStorge.js.map +1 -0
- package/dist/LivequeryTransporter.d.ts +1 -1
- package/dist/LivequeryTransporter.d.ts.map +1 -1
- package/dist/LivequeryTransporter.js +2 -0
- package/dist/LivequeryTransporter.js.map +1 -0
- package/dist/helpers/filterDocs.d.ts +1 -1
- package/dist/helpers/filterDocs.d.ts.map +1 -1
- package/dist/helpers/filterDocs.js +80 -0
- package/dist/helpers/filterDocs.js.map +1 -0
- package/dist/helpers/tryCatch.js +10 -0
- package/dist/helpers/tryCatch.js.map +1 -0
- package/dist/helpers/whenCompleted.js +5 -0
- package/dist/helpers/whenCompleted.js.map +1 -0
- package/dist/index.d.ts +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -3167
- package/dist/index.js.map +1 -100
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +73 -4
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export function filterDocs(documents, filters) {
|
|
2
|
+
if (!filters)
|
|
3
|
+
return documents;
|
|
4
|
+
const normalized = filters;
|
|
5
|
+
return documents.filter((doc) => matchesAllFilters(doc, normalized));
|
|
6
|
+
}
|
|
7
|
+
export function matchesAllFilters(doc, filters) {
|
|
8
|
+
for (const [key, expected] of Object.entries(filters)) {
|
|
9
|
+
if (key.startsWith(':') || key.endsWith(':sort'))
|
|
10
|
+
continue;
|
|
11
|
+
const split = key.split(':');
|
|
12
|
+
const fieldPath = split[0];
|
|
13
|
+
if (!fieldPath)
|
|
14
|
+
continue;
|
|
15
|
+
const op = split[1] || 'eq';
|
|
16
|
+
const actual = getByPath(doc, fieldPath);
|
|
17
|
+
if (!matchByOperator(actual, op, expected)) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
function matchByOperator(actual, op, expected) {
|
|
24
|
+
switch (op) {
|
|
25
|
+
case 'gt':
|
|
26
|
+
return asNumber(actual) > asNumber(expected);
|
|
27
|
+
case 'gte':
|
|
28
|
+
return asNumber(actual) >= asNumber(expected);
|
|
29
|
+
case 'lt':
|
|
30
|
+
return asNumber(actual) < asNumber(expected);
|
|
31
|
+
case 'lte':
|
|
32
|
+
return asNumber(actual) <= asNumber(expected);
|
|
33
|
+
case 'eq-number':
|
|
34
|
+
return asNumber(actual) === asNumber(expected);
|
|
35
|
+
case 'in':
|
|
36
|
+
return Array.isArray(expected) ? expected.includes(actual) : false;
|
|
37
|
+
case 'nin':
|
|
38
|
+
return Array.isArray(expected) ? !expected.includes(actual) : true;
|
|
39
|
+
case 'include':
|
|
40
|
+
return Array.isArray(actual) ? actual.includes(expected) : false;
|
|
41
|
+
case 'boolean':
|
|
42
|
+
return matchBoolean(actual, expected);
|
|
43
|
+
case 'like':
|
|
44
|
+
return String(actual || '').toLowerCase().includes(String(expected || '').toLowerCase());
|
|
45
|
+
case 'null':
|
|
46
|
+
return expected === 'null-only'
|
|
47
|
+
? (actual === null || typeof actual === 'undefined')
|
|
48
|
+
: (actual !== null && typeof actual !== 'undefined');
|
|
49
|
+
case 'eq':
|
|
50
|
+
default:
|
|
51
|
+
return actual === expected;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function matchBoolean(actual, expected) {
|
|
55
|
+
switch (expected) {
|
|
56
|
+
case 'true':
|
|
57
|
+
return actual === true;
|
|
58
|
+
case 'false':
|
|
59
|
+
return actual === false;
|
|
60
|
+
case 'not-true':
|
|
61
|
+
return actual !== true;
|
|
62
|
+
case 'not-false':
|
|
63
|
+
return actual !== false;
|
|
64
|
+
default:
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function getByPath(obj, path) {
|
|
69
|
+
if (!path.includes('.'))
|
|
70
|
+
return obj[path];
|
|
71
|
+
return path.split('.').reduce((acc, key) => {
|
|
72
|
+
if (!acc || typeof acc !== 'object')
|
|
73
|
+
return undefined;
|
|
74
|
+
return acc[key];
|
|
75
|
+
}, obj);
|
|
76
|
+
}
|
|
77
|
+
function asNumber(value) {
|
|
78
|
+
return Number(value);
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=filterDocs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterDocs.js","sourceRoot":"","sources":["../../src/helpers/filterDocs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tryCatch.js","sourceRoot":"","sources":["../../src/helpers/tryCatch.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAK,EAAoB,EAA+C,EAAE;IACnG,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAA;QACzB,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAc,EAAE,SAAS,CAAC,CAAA;IACtC,CAAC;AACL,CAAC,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Subject, Observable, materialize, filter, map, shareReplay } from 'rxjs';
|
|
2
|
+
export function whenCompleted(stream) {
|
|
3
|
+
return stream.pipe(materialize(), filter(n => n.kind === 'C' || n.kind === 'E'), map(() => undefined), shareReplay(1));
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=whenCompleted.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whenCompleted.js","sourceRoot":"","sources":["../../src/helpers/whenCompleted.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAEjF,MAAM,UAAU,aAAa,CAAC,MAAoB;IAC9C,OAAO,MAAM,CAAC,IAAI,CACd,WAAW,EAAE,EACb,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,EAC7C,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,EACpB,WAAW,CAAC,CAAC,CAAC,CACjB,CAAA;AACL,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export * from "./LivequeryCollection";
|
|
2
|
-
export * from "./LivequeryCore";
|
|
3
|
-
export * from "./LivequeryMemoryStorage";
|
|
4
|
-
export * from "./LivequeryStorge";
|
|
5
|
-
export * from "./LivequeryTransporter";
|
|
6
|
-
export * from "./types";
|
|
7
|
-
export * from "./helpers/filterDocs";
|
|
8
|
-
export * from "./LivequeryDocument";
|
|
1
|
+
export * from "./LivequeryCollection.js";
|
|
2
|
+
export * from "./LivequeryCore.js";
|
|
3
|
+
export * from "./LivequeryMemoryStorage.js";
|
|
4
|
+
export * from "./LivequeryStorge.js";
|
|
5
|
+
export * from "./LivequeryTransporter.js";
|
|
6
|
+
export * from "./types.js";
|
|
7
|
+
export * from "./helpers/filterDocs.js";
|
|
8
|
+
export * from "./LivequeryDocument.js";
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,YAAY,CAAA;AAC1B,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA"}
|