@signaldb/core 1.2.4 → 1.3.0

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 (67) hide show
  1. package/dist/.vite/manifest.json +28 -47
  2. package/dist/index.cjs.js +12 -18
  3. package/dist/index.cjs10.js +6 -27
  4. package/dist/index.cjs11.js +3 -6
  5. package/dist/index.cjs12.js +136 -3
  6. package/dist/index.cjs13.js +40 -134
  7. package/dist/index.cjs14.js +5 -38
  8. package/dist/index.cjs15.js +42 -2
  9. package/dist/index.cjs16.js +11 -5
  10. package/dist/index.cjs17.js +17 -40
  11. package/dist/index.cjs18.js +262 -11
  12. package/dist/index.cjs19.js +66 -16
  13. package/dist/index.cjs2.js +688 -96
  14. package/dist/index.cjs20.js +71 -247
  15. package/dist/index.cjs21.js +8 -68
  16. package/dist/index.cjs22.js +22 -83
  17. package/dist/index.cjs23.js +144 -8
  18. package/dist/index.cjs24.js +5 -25
  19. package/dist/index.cjs25.js +16 -144
  20. package/dist/index.cjs26.js +27 -5
  21. package/dist/index.cjs27.js +39 -15
  22. package/dist/index.cjs28.js +25 -24
  23. package/dist/index.cjs29.js +7 -40
  24. package/dist/index.cjs3.js +139 -664
  25. package/dist/index.cjs4.js +62 -166
  26. package/dist/index.cjs5.js +3 -67
  27. package/dist/index.cjs6.js +2 -2
  28. package/dist/index.cjs7.js +2 -2
  29. package/dist/index.cjs8.js +2 -2
  30. package/dist/index.cjs9.js +27 -3
  31. package/dist/index.d.ts +0 -1
  32. package/dist/index.mjs +12 -18
  33. package/dist/index10.mjs +6 -27
  34. package/dist/index11.mjs +3 -6
  35. package/dist/index12.mjs +136 -3
  36. package/dist/index13.mjs +39 -134
  37. package/dist/index14.mjs +5 -37
  38. package/dist/index15.mjs +41 -2
  39. package/dist/index16.mjs +11 -5
  40. package/dist/index17.mjs +17 -39
  41. package/dist/index18.mjs +261 -11
  42. package/dist/index19.mjs +65 -16
  43. package/dist/index2.mjs +688 -94
  44. package/dist/index20.mjs +71 -247
  45. package/dist/index21.mjs +8 -67
  46. package/dist/index22.mjs +22 -82
  47. package/dist/index23.mjs +144 -8
  48. package/dist/index24.mjs +5 -25
  49. package/dist/index25.mjs +16 -144
  50. package/dist/index26.mjs +27 -5
  51. package/dist/index27.mjs +39 -15
  52. package/dist/index28.mjs +25 -24
  53. package/dist/index29.mjs +7 -40
  54. package/dist/index3.mjs +139 -664
  55. package/dist/index4.mjs +61 -166
  56. package/dist/index5.mjs +3 -66
  57. package/dist/index6.mjs +2 -2
  58. package/dist/index7.mjs +2 -2
  59. package/dist/index8.mjs +2 -2
  60. package/dist/index9.mjs +27 -3
  61. package/dist/utils/getMatchingKeys.d.ts +11 -6
  62. package/package.json +1 -1
  63. package/dist/devtools.d.ts +0 -4
  64. package/dist/index.cjs30.js +0 -29
  65. package/dist/index.cjs31.js +0 -9
  66. package/dist/index30.mjs +0 -30
  67. package/dist/index31.mjs +0 -10
package/dist/index19.mjs CHANGED
@@ -1,21 +1,70 @@
1
- function createSignal(dependency, initialValue, isEqual = Object.is) {
2
- let value = initialValue;
3
- const signal = {
4
- get() {
5
- if (dependency)
6
- dependency.depend();
7
- return value;
8
- },
9
- set(newValue) {
10
- if (isEqual(value, newValue))
11
- return;
12
- value = newValue;
13
- if (dependency)
14
- dependency.notify();
1
+ import intersection from "./index24.mjs";
2
+ function getMergedIndexInfo(indexProviders, selector) {
3
+ return indexProviders.reduce((memo, indexProvider) => {
4
+ const info = indexProvider.query(selector);
5
+ if (!info.matched)
6
+ return memo;
7
+ const optimizedSelector = Object.fromEntries(Object.entries(memo.optimizedSelector).filter(([key]) => !info.fields.includes(key)));
8
+ return {
9
+ matched: true,
10
+ positions: [...new Set(memo.matched ? intersection(memo.positions, info.positions) : info.positions)],
11
+ optimizedSelector
12
+ };
13
+ }, {
14
+ matched: false,
15
+ positions: [],
16
+ optimizedSelector: { ...selector }
17
+ });
18
+ }
19
+ function getIndexInfo(indexProviders, selector) {
20
+ if (selector == null || Object.keys(selector).length <= 0) {
21
+ return { matched: false, positions: [], optimizedSelector: selector };
22
+ }
23
+ const { $and, $or, ...rest } = selector;
24
+ const flatInfo = getMergedIndexInfo(indexProviders, rest);
25
+ let { matched, positions } = flatInfo;
26
+ const newSelector = flatInfo.optimizedSelector;
27
+ if (Array.isArray($and)) {
28
+ const $andNew = [];
29
+ for (const sel of $and) {
30
+ const { matched: selMatched, positions: selPositions, optimizedSelector } = getIndexInfo(indexProviders, sel);
31
+ if (selMatched) {
32
+ positions = matched ? intersection(positions, selPositions) : selPositions;
33
+ matched = true;
34
+ if (Object.keys(optimizedSelector).length > 0) {
35
+ $andNew.push(optimizedSelector);
36
+ }
37
+ } else {
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
+ for (const sel of $or) {
47
+ const { matched: selMatched, positions: selPositions, optimizedSelector } = getIndexInfo(indexProviders, sel);
48
+ if (selMatched) {
49
+ positions = [.../* @__PURE__ */ new Set([...positions, ...selPositions])];
50
+ matched = true;
51
+ if (Object.keys(optimizedSelector).length > 0) {
52
+ $orNew.push(optimizedSelector);
53
+ }
54
+ } else {
55
+ $orNew.push(sel);
56
+ }
15
57
  }
58
+ if ($orNew.length > 0)
59
+ newSelector.$or = $orNew;
60
+ }
61
+ return {
62
+ matched,
63
+ positions: positions || [],
64
+ optimizedSelector: newSelector
16
65
  };
17
- return signal;
18
66
  }
19
67
  export {
20
- createSignal as default
68
+ getIndexInfo as default,
69
+ getMergedIndexInfo
21
70
  };