@signaldb/core 1.7.2 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.vite/manifest.json +88 -59
- package/dist/AutoFetchCollection.d.ts +3 -3
- package/dist/Collection/Cursor.d.ts +10 -7
- package/dist/Collection/index.d.ts +27 -11
- package/dist/Collection/types.d.ts +1 -0
- package/dist/ReplicatedCollection.d.ts +4 -4
- package/dist/index.cjs.js +26 -27
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +14 -28
- package/dist/index10.cjs.js +265 -0
- package/dist/index10.mjs +263 -28
- package/dist/index11.cjs.js +125 -0
- package/dist/index11.mjs +124 -12
- package/dist/index12.cjs.js +15 -0
- package/dist/index12.mjs +14 -5
- package/dist/index13.cjs.js +23 -0
- package/dist/index13.mjs +22 -133
- package/dist/index14.cjs.js +12 -0
- package/dist/index14.mjs +11 -73
- package/dist/index15.cjs.js +22 -0
- package/dist/index15.mjs +21 -10
- package/dist/index16.cjs.js +33 -0
- package/dist/index16.mjs +32 -27
- package/dist/index17.cjs.js +15 -0
- package/dist/index17.mjs +14 -142
- package/dist/index18.cjs.js +98 -0
- package/dist/index18.mjs +97 -7
- package/dist/index19.cjs.js +11 -0
- package/dist/index19.mjs +10 -41
- package/dist/index2.cjs.js +23 -0
- package/dist/index2.mjs +22 -260
- package/dist/index20.cjs.js +45 -0
- package/dist/index20.mjs +44 -15
- package/dist/index21.cjs.js +45 -0
- package/dist/index21.mjs +44 -26
- package/dist/index22.cjs.js +69 -0
- package/dist/index22.mjs +66 -77
- package/dist/index23.cjs.js +778 -0
- package/dist/index23.mjs +775 -81
- package/dist/index24.cjs.js +11 -0
- package/dist/index24.mjs +10 -18
- package/dist/index25.cjs.js +81 -0
- package/dist/index25.mjs +80 -29
- package/dist/index26.cjs.js +98 -0
- package/dist/index26.mjs +96 -8
- package/dist/index27.cjs.js +154 -0
- package/dist/index27.mjs +153 -7
- package/dist/index28.cjs.js +11 -0
- package/dist/index28.mjs +10 -29
- package/dist/index29.cjs.js +11 -0
- package/dist/index29.mjs +10 -42
- package/dist/index3.cjs.js +19 -0
- package/dist/index3.mjs +18 -788
- package/dist/index4.cjs.js +37 -0
- package/dist/index4.mjs +36 -167
- package/dist/index5.cjs.js +35 -0
- package/dist/index5.mjs +34 -67
- package/dist/index6.cjs.js +47 -0
- package/dist/index6.mjs +46 -5
- package/dist/index7.cjs.js +33 -0
- package/dist/index7.mjs +32 -5
- package/dist/index8.cjs.js +19 -0
- package/dist/index8.mjs +18 -5
- package/dist/index9.cjs.js +139 -0
- package/dist/index9.mjs +138 -5
- package/dist/utils/deepClone.d.ts +1 -1
- package/package.json +3 -3
- package/dist/index.cjs10.js +0 -29
- package/dist/index.cjs11.js +0 -12
- package/dist/index.cjs12.js +0 -5
- package/dist/index.cjs13.js +0 -133
- package/dist/index.cjs14.js +0 -74
- package/dist/index.cjs15.js +0 -10
- package/dist/index.cjs16.js +0 -27
- package/dist/index.cjs17.js +0 -142
- package/dist/index.cjs18.js +0 -7
- package/dist/index.cjs19.js +0 -42
- package/dist/index.cjs2.js +0 -261
- package/dist/index.cjs20.js +0 -15
- package/dist/index.cjs21.js +0 -26
- package/dist/index.cjs22.js +0 -79
- package/dist/index.cjs23.js +0 -84
- package/dist/index.cjs24.js +0 -18
- package/dist/index.cjs25.js +0 -29
- package/dist/index.cjs26.js +0 -9
- package/dist/index.cjs27.js +0 -7
- package/dist/index.cjs28.js +0 -29
- package/dist/index.cjs29.js +0 -42
- package/dist/index.cjs3.js +0 -788
- package/dist/index.cjs4.js +0 -167
- package/dist/index.cjs5.js +0 -68
- package/dist/index.cjs6.js +0 -5
- package/dist/index.cjs7.js +0 -5
- package/dist/index.cjs8.js +0 -5
- package/dist/index.cjs9.js +0 -5
package/dist/index22.mjs
CHANGED
|
@@ -1,79 +1,68 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
import get from "./index2.mjs";
|
|
2
|
+
import serializeValue from "./index15.mjs";
|
|
3
|
+
import createIndexProvider from "./index19.mjs";
|
|
4
|
+
import getMatchingKeys from "./index21.mjs";
|
|
5
|
+
//#region src/Collection/createIndex.ts
|
|
6
|
+
/**
|
|
7
|
+
* creates an index for a specific field but uses an external map to store the index
|
|
8
|
+
* @param field name of the field
|
|
9
|
+
* @param index the external map to use for the index
|
|
10
|
+
* @returns an index provider to pass to the `indices` option of the collection constructor
|
|
11
|
+
*/
|
|
12
|
+
function createExternalIndex(field, index) {
|
|
13
|
+
return createIndexProvider({
|
|
14
|
+
query(selector) {
|
|
15
|
+
if (!Object.hasOwnProperty.call(selector, field)) return { matched: false };
|
|
16
|
+
const fieldSelector = selector[field];
|
|
17
|
+
const filteresForNull = fieldSelector == null || fieldSelector.$exists === false;
|
|
18
|
+
const keys = filteresForNull ? {
|
|
19
|
+
include: null,
|
|
20
|
+
exclude: [...index.keys()].filter((key) => key != null)
|
|
21
|
+
} : getMatchingKeys(field, selector);
|
|
22
|
+
if (keys.include == null && keys.exclude == null) return { matched: false };
|
|
23
|
+
let includedPositions = [];
|
|
24
|
+
if (keys.include == null) for (const set of index.values()) for (const pos of set) includedPositions.push(pos);
|
|
25
|
+
else for (const key of keys.include) {
|
|
26
|
+
const posSet = index.get(key);
|
|
27
|
+
if (posSet) for (const pos of posSet) includedPositions.push(pos);
|
|
28
|
+
}
|
|
29
|
+
if (keys.exclude != null) {
|
|
30
|
+
const excludeSet = /* @__PURE__ */ new Set();
|
|
31
|
+
for (const key of keys.exclude) {
|
|
32
|
+
const posSet = index.get(key);
|
|
33
|
+
if (posSet) for (const pos of posSet) excludeSet.add(pos);
|
|
34
|
+
}
|
|
35
|
+
includedPositions = includedPositions.filter((pos) => !excludeSet.has(pos));
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
matched: true,
|
|
39
|
+
positions: includedPositions,
|
|
40
|
+
fields: [field],
|
|
41
|
+
keepSelector: filteresForNull
|
|
42
|
+
};
|
|
43
|
+
},
|
|
44
|
+
rebuild() {}
|
|
45
|
+
});
|
|
18
46
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
$andNew.push(sel);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if ($andNew.length > 0)
|
|
42
|
-
newSelector.$and = $andNew;
|
|
43
|
-
}
|
|
44
|
-
if (Array.isArray($or)) {
|
|
45
|
-
const $orNew = [];
|
|
46
|
-
const matchedBefore = matched;
|
|
47
|
-
const positionsBefore = positions;
|
|
48
|
-
let hasNonIndexField = false;
|
|
49
|
-
for (const sel of $or) {
|
|
50
|
-
const { matched: selMatched, positions: selPositions, optimizedSelector } = getIndexInfo(indexProviders, sel);
|
|
51
|
-
if (selMatched) {
|
|
52
|
-
positions = [.../* @__PURE__ */ new Set([...positions, ...selPositions])];
|
|
53
|
-
matched = true;
|
|
54
|
-
if (Object.keys(optimizedSelector).length > 0) {
|
|
55
|
-
$orNew.push(optimizedSelector);
|
|
56
|
-
}
|
|
57
|
-
} else {
|
|
58
|
-
$orNew.push(sel);
|
|
59
|
-
hasNonIndexField = true;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
if ($orNew.length > 0)
|
|
63
|
-
newSelector.$or = $orNew;
|
|
64
|
-
if (hasNonIndexField) {
|
|
65
|
-
newSelector.$or = $or;
|
|
66
|
-
matched = matchedBefore;
|
|
67
|
-
positions = positionsBefore;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return {
|
|
71
|
-
matched,
|
|
72
|
-
positions: positions || [],
|
|
73
|
-
optimizedSelector: newSelector
|
|
74
|
-
};
|
|
47
|
+
/**
|
|
48
|
+
* creates an index for a specific field
|
|
49
|
+
* @param field name of the field
|
|
50
|
+
* @returns an index provider to pass to the `indices` option of the collection constructor
|
|
51
|
+
*/
|
|
52
|
+
function createIndex(field) {
|
|
53
|
+
const index = /* @__PURE__ */ new Map();
|
|
54
|
+
return {
|
|
55
|
+
...createExternalIndex(field, index),
|
|
56
|
+
rebuild(items) {
|
|
57
|
+
index.clear();
|
|
58
|
+
items.forEach((item, i) => {
|
|
59
|
+
const value = serializeValue(get(item, field));
|
|
60
|
+
const current = index.get(value) || /* @__PURE__ */ new Set();
|
|
61
|
+
current.add(i);
|
|
62
|
+
index.set(value, current);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
};
|
|
75
66
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
getMergedIndexInfo
|
|
79
|
-
};
|
|
67
|
+
//#endregion
|
|
68
|
+
export { createExternalIndex, createIndex as default };
|