@signaldb/core 1.2.3 → 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 (68) 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/types/Selector.d.ts +33 -35
  62. package/dist/utils/getMatchingKeys.d.ts +11 -6
  63. package/package.json +1 -1
  64. package/dist/devtools.d.ts +0 -4
  65. package/dist/index.cjs30.js +0 -29
  66. package/dist/index.cjs31.js +0 -9
  67. package/dist/index30.mjs +0 -30
  68. package/dist/index31.mjs +0 -10
@@ -1,12 +1,6 @@
1
1
  {
2
- "__vite-browser-external": {
3
- "file": "index.cjs15.js",
4
- "name": "_virtual/__vite-browser-external",
5
- "src": "__vite-browser-external",
6
- "isDynamicEntry": true
7
- },
8
2
  "src/AutoFetchCollection.ts": {
9
- "file": "index.cjs4.js",
3
+ "file": "index.cjs3.js",
10
4
  "name": "AutoFetchCollection",
11
5
  "src": "src/AutoFetchCollection.ts",
12
6
  "imports": [
@@ -15,7 +9,7 @@
15
9
  ]
16
10
  },
17
11
  "src/Collection/Cursor.ts": {
18
- "file": "index.cjs20.js",
12
+ "file": "index.cjs18.js",
19
13
  "name": "Collection/Cursor",
20
14
  "src": "src/Collection/Cursor.ts",
21
15
  "imports": [
@@ -25,7 +19,7 @@
25
19
  ]
26
20
  },
27
21
  "src/Collection/Observer.ts": {
28
- "file": "index.cjs25.js",
22
+ "file": "index.cjs23.js",
29
23
  "name": "Collection/Observer",
30
24
  "src": "src/Collection/Observer.ts",
31
25
  "imports": [
@@ -34,7 +28,7 @@
34
28
  ]
35
29
  },
36
30
  "src/Collection/createIndex.ts": {
37
- "file": "index.cjs14.js",
31
+ "file": "index.cjs13.js",
38
32
  "name": "Collection/createIndex",
39
33
  "src": "src/Collection/createIndex.ts",
40
34
  "imports": [
@@ -45,7 +39,7 @@
45
39
  ]
46
40
  },
47
41
  "src/Collection/getIndexInfo.ts": {
48
- "file": "index.cjs21.js",
42
+ "file": "index.cjs19.js",
49
43
  "name": "Collection/getIndexInfo",
50
44
  "src": "src/Collection/getIndexInfo.ts",
51
45
  "imports": [
@@ -53,7 +47,7 @@
53
47
  ]
54
48
  },
55
49
  "src/Collection/index.ts": {
56
- "file": "index.cjs3.js",
50
+ "file": "index.cjs2.js",
57
51
  "name": "Collection/index",
58
52
  "src": "src/Collection/index.ts",
59
53
  "imports": [
@@ -71,7 +65,7 @@
71
65
  ]
72
66
  },
73
67
  "src/ReplicatedCollection.ts": {
74
- "file": "index.cjs22.js",
68
+ "file": "index.cjs20.js",
75
69
  "name": "ReplicatedCollection",
76
70
  "src": "src/ReplicatedCollection.ts",
77
71
  "imports": [
@@ -82,39 +76,26 @@
82
76
  ]
83
77
  },
84
78
  "src/createIndexProvider.ts": {
85
- "file": "index.cjs6.js",
79
+ "file": "index.cjs5.js",
86
80
  "name": "createIndexProvider",
87
81
  "src": "src/createIndexProvider.ts"
88
82
  },
89
83
  "src/createMemoryAdapter.ts": {
90
- "file": "index.cjs7.js",
84
+ "file": "index.cjs6.js",
91
85
  "name": "createMemoryAdapter",
92
86
  "src": "src/createMemoryAdapter.ts"
93
87
  },
94
88
  "src/createReactivityAdapter.ts": {
95
- "file": "index.cjs9.js",
89
+ "file": "index.cjs8.js",
96
90
  "name": "createReactivityAdapter",
97
91
  "src": "src/createReactivityAdapter.ts"
98
92
  },
99
- "src/devtools.ts": {
100
- "file": "index.cjs2.js",
101
- "name": "devtools",
102
- "src": "src/devtools.ts",
103
- "imports": [
104
- "src/Collection/index.ts"
105
- ],
106
- "dynamicImports": [
107
- "__vite-browser-external",
108
- "__vite-browser-external"
109
- ]
110
- },
111
93
  "src/index.ts": {
112
94
  "file": "index.cjs.js",
113
95
  "name": "index",
114
96
  "src": "src/index.ts",
115
97
  "isEntry": true,
116
98
  "imports": [
117
- "src/devtools.ts",
118
99
  "src/Collection/index.ts",
119
100
  "src/AutoFetchCollection.ts",
120
101
  "src/persistence/combinePersistenceAdapters.ts",
@@ -130,7 +111,7 @@
130
111
  ]
131
112
  },
132
113
  "src/persistence/combinePersistenceAdapters.ts": {
133
- "file": "index.cjs5.js",
114
+ "file": "index.cjs4.js",
134
115
  "name": "persistence/combinePersistenceAdapters",
135
116
  "src": "src/persistence/combinePersistenceAdapters.ts",
136
117
  "imports": [
@@ -138,32 +119,32 @@
138
119
  ]
139
120
  },
140
121
  "src/persistence/createPersistenceAdapter.ts": {
141
- "file": "index.cjs8.js",
122
+ "file": "index.cjs7.js",
142
123
  "name": "persistence/createPersistenceAdapter",
143
124
  "src": "src/persistence/createPersistenceAdapter.ts"
144
125
  },
145
126
  "src/utils/EventEmitter.ts": {
146
- "file": "index.cjs13.js",
127
+ "file": "index.cjs12.js",
147
128
  "name": "utils/EventEmitter",
148
129
  "src": "src/utils/EventEmitter.ts"
149
130
  },
150
131
  "src/utils/createSignal.ts": {
151
- "file": "index.cjs19.js",
132
+ "file": "index.cjs17.js",
152
133
  "name": "utils/createSignal",
153
134
  "src": "src/utils/createSignal.ts"
154
135
  },
155
136
  "src/utils/deepClone.ts": {
156
- "file": "index.cjs17.js",
137
+ "file": "index.cjs15.js",
157
138
  "name": "utils/deepClone",
158
139
  "src": "src/utils/deepClone.ts"
159
140
  },
160
141
  "src/utils/get.ts": {
161
- "file": "index.cjs27.js",
142
+ "file": "index.cjs25.js",
162
143
  "name": "utils/get",
163
144
  "src": "src/utils/get.ts"
164
145
  },
165
146
  "src/utils/getMatchingKeys.ts": {
166
- "file": "index.cjs28.js",
147
+ "file": "index.cjs26.js",
167
148
  "name": "utils/getMatchingKeys",
168
149
  "src": "src/utils/getMatchingKeys.ts",
169
150
  "imports": [
@@ -172,32 +153,32 @@
172
153
  ]
173
154
  },
174
155
  "src/utils/intersection.ts": {
175
- "file": "index.cjs26.js",
156
+ "file": "index.cjs24.js",
176
157
  "name": "utils/intersection",
177
158
  "src": "src/utils/intersection.ts"
178
159
  },
179
160
  "src/utils/isEqual.ts": {
180
- "file": "index.cjs10.js",
161
+ "file": "index.cjs9.js",
181
162
  "name": "utils/isEqual",
182
163
  "src": "src/utils/isEqual.ts"
183
164
  },
184
165
  "src/utils/isFieldExpression.ts": {
185
- "file": "index.cjs29.js",
166
+ "file": "index.cjs27.js",
186
167
  "name": "utils/isFieldExpression",
187
168
  "src": "src/utils/isFieldExpression.ts"
188
169
  },
189
170
  "src/utils/match.ts": {
190
- "file": "index.cjs16.js",
171
+ "file": "index.cjs14.js",
191
172
  "name": "utils/match",
192
173
  "src": "src/utils/match.ts"
193
174
  },
194
175
  "src/utils/modify.ts": {
195
- "file": "index.cjs11.js",
176
+ "file": "index.cjs10.js",
196
177
  "name": "utils/modify",
197
178
  "src": "src/utils/modify.ts"
198
179
  },
199
180
  "src/utils/project.ts": {
200
- "file": "index.cjs24.js",
181
+ "file": "index.cjs22.js",
201
182
  "name": "utils/project",
202
183
  "src": "src/utils/project.ts",
203
184
  "imports": [
@@ -206,22 +187,22 @@
206
187
  ]
207
188
  },
208
189
  "src/utils/randomId.ts": {
209
- "file": "index.cjs12.js",
190
+ "file": "index.cjs11.js",
210
191
  "name": "utils/randomId",
211
192
  "src": "src/utils/randomId.ts"
212
193
  },
213
194
  "src/utils/serializeValue.ts": {
214
- "file": "index.cjs18.js",
195
+ "file": "index.cjs16.js",
215
196
  "name": "utils/serializeValue",
216
197
  "src": "src/utils/serializeValue.ts"
217
198
  },
218
199
  "src/utils/set.ts": {
219
- "file": "index.cjs30.js",
200
+ "file": "index.cjs28.js",
220
201
  "name": "utils/set",
221
202
  "src": "src/utils/set.ts"
222
203
  },
223
204
  "src/utils/sortItems.ts": {
224
- "file": "index.cjs23.js",
205
+ "file": "index.cjs21.js",
225
206
  "name": "utils/sortItems",
226
207
  "src": "src/utils/sortItems.ts",
227
208
  "imports": [
@@ -229,7 +210,7 @@
229
210
  ]
230
211
  },
231
212
  "src/utils/uniqueBy.ts": {
232
- "file": "index.cjs31.js",
213
+ "file": "index.cjs29.js",
233
214
  "name": "utils/uniqueBy",
234
215
  "src": "src/utils/uniqueBy.ts"
235
216
  }
package/dist/index.cjs.js CHANGED
@@ -1,23 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const devtools = require("./index.cjs2.js");
4
- const index = require("./index.cjs3.js");
5
- const AutoFetchCollection = require("./index.cjs4.js");
6
- const combinePersistenceAdapters = require("./index.cjs5.js");
7
- const createIndexProvider = require("./index.cjs6.js");
8
- const createMemoryAdapter = require("./index.cjs7.js");
9
- const createPersistenceAdapter = require("./index.cjs8.js");
10
- const createReactivityAdapter = require("./index.cjs9.js");
11
- const isEqual = require("./index.cjs10.js");
12
- const modify = require("./index.cjs11.js");
13
- const randomId = require("./index.cjs12.js");
14
- const EventEmitter = require("./index.cjs13.js");
15
- const createIndex = require("./index.cjs14.js");
16
- /* istanbul ignore if -- @preserve */
17
- if (process.env.NODE_ENV !== "production") {
18
- devtools();
19
- }
20
- exports.loadDeveloperTools = devtools;
3
+ const index = require("./index.cjs2.js");
4
+ const AutoFetchCollection = require("./index.cjs3.js");
5
+ const combinePersistenceAdapters = require("./index.cjs4.js");
6
+ const createIndexProvider = require("./index.cjs5.js");
7
+ const createMemoryAdapter = require("./index.cjs6.js");
8
+ const createPersistenceAdapter = require("./index.cjs7.js");
9
+ const createReactivityAdapter = require("./index.cjs8.js");
10
+ const isEqual = require("./index.cjs9.js");
11
+ const modify = require("./index.cjs10.js");
12
+ const randomId = require("./index.cjs11.js");
13
+ const EventEmitter = require("./index.cjs12.js");
14
+ const createIndex = require("./index.cjs13.js");
21
15
  exports.Collection = index.default;
22
16
  exports.AutoFetchCollection = AutoFetchCollection;
23
17
  exports.combinePersistenceAdapters = combinePersistenceAdapters.default;
@@ -1,29 +1,8 @@
1
1
  "use strict";
2
- function isEqual(a, b) {
3
- if (Object.is(a, b))
4
- return true;
5
- if (a instanceof RegExp && b instanceof RegExp)
6
- return a.toString() === b.toString();
7
- if (a instanceof Date && b instanceof Date)
8
- return a.getTime() === b.getTime();
9
- if (typeof a !== "object")
10
- return false;
11
- if (typeof b !== "object")
12
- return false;
13
- if (a === null)
14
- return false;
15
- if (b === null)
16
- return false;
17
- const aKeys = Object.keys(a);
18
- const bKeys = Object.keys(b);
19
- if (aKeys.length !== bKeys.length)
20
- return false;
21
- for (const key of aKeys) {
22
- if (!bKeys.includes(key))
23
- return false;
24
- if (!isEqual(a[key], b[key]))
25
- return false;
26
- }
27
- return true;
2
+ const mingo = require("mingo");
3
+ function modify(item, modifier) {
4
+ const clonedItem = { ...item };
5
+ mingo.update(clonedItem, modifier);
6
+ return clonedItem;
28
7
  }
29
- module.exports = isEqual;
8
+ module.exports = modify;
@@ -1,8 +1,5 @@
1
1
  "use strict";
2
- const mingo = require("mingo");
3
- function modify(item, modifier) {
4
- const clonedItem = { ...item };
5
- mingo.update(clonedItem, modifier);
6
- return clonedItem;
2
+ function randomId() {
3
+ return Math.floor(Math.random() * 1e17).toString(16);
7
4
  }
8
- module.exports = modify;
5
+ module.exports = randomId;
@@ -1,5 +1,138 @@
1
1
  "use strict";
2
- function randomId() {
3
- return Math.floor(Math.random() * 1e17).toString(16);
2
+ var __defProp = Object.defineProperty;
3
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ class EventEmitter {
6
+ constructor() {
7
+ __publicField(this, "_maxListeners", 100);
8
+ /**
9
+ * We store a set of the listeners for each event.
10
+ */
11
+ __publicField(this, "_listenerStore", /* @__PURE__ */ new Map());
12
+ }
13
+ setMaxListeners(max) {
14
+ this._maxListeners = max;
15
+ return this;
16
+ }
17
+ /**
18
+ * Subscribe to an event with a listener function.
19
+ * @param eventName The event name (key of E).
20
+ * @param listener A function that receives the emitted arguments.
21
+ * @returns The emitter instance (for chaining).
22
+ */
23
+ on(eventName, listener) {
24
+ let listenersSet = this._listenerStore.get(eventName);
25
+ if (!listenersSet) {
26
+ listenersSet = /* @__PURE__ */ new Set();
27
+ this._listenerStore.set(eventName, listenersSet);
28
+ }
29
+ listenersSet.add(listener);
30
+ if (listenersSet.size > this._maxListeners) {
31
+ console.warn(`Possible EventEmitter memory leak detected. ${listenersSet.size} ${String(eventName)} listeners added. Use emitter.setMaxListeners() to increase limit.`);
32
+ }
33
+ return this;
34
+ }
35
+ /**
36
+ * Subscribe to an event with a listener function.
37
+ * @param eventName The event name (key of E).
38
+ * @param listener A function that receives the emitted arguments.
39
+ * @returns The emitter instance (for chaining).
40
+ */
41
+ addListener(eventName, listener) {
42
+ return this.on(eventName, listener);
43
+ }
44
+ /**
45
+ * Subscribe to an event, handling it only once. Automatically removes
46
+ * the listener after it fires the first time.
47
+ * @param eventName The event name (key of E).
48
+ * @param listener A function that receives the emitted arguments.
49
+ * @returns The emitter instance (for chaining).
50
+ */
51
+ once(eventName, listener) {
52
+ const onceWrapper = (...args) => {
53
+ listener(...args);
54
+ this.off(eventName, onceWrapper);
55
+ };
56
+ return this.on(eventName, onceWrapper);
57
+ }
58
+ /**
59
+ * Unsubscribe a previously subscribed listener.
60
+ * @param eventName The event name (key of E).
61
+ * @param listener The original function passed to `on` or `once`.
62
+ * @returns The emitter instance (for chaining).
63
+ */
64
+ off(eventName, listener) {
65
+ const listenersSet = this._listenerStore.get(eventName);
66
+ if (!listenersSet)
67
+ return this;
68
+ listenersSet.delete(listener);
69
+ if (listenersSet.size === 0) {
70
+ this._listenerStore.delete(eventName);
71
+ }
72
+ return this;
73
+ }
74
+ /**
75
+ * Unsubscribe a previously subscribed listener.
76
+ * @param eventName The event name (key of E).
77
+ * @param listener The original function passed to `on` or `once`.
78
+ * @returns The emitter instance (for chaining).
79
+ */
80
+ removeListener(eventName, listener) {
81
+ return this.off(eventName, listener);
82
+ }
83
+ /**
84
+ * Emit (dispatch) an event with a variable number of arguments.
85
+ * @param eventName The event name (key of E).
86
+ * @param args The arguments to pass to subscribed listeners.
87
+ */
88
+ emit(eventName, ...args) {
89
+ this.listeners(eventName).forEach((listener) => {
90
+ listener(...args);
91
+ });
92
+ }
93
+ /**
94
+ * Returns the array of listener functions currently registered for a given event.
95
+ * @param eventName The event name (key of E).
96
+ * @returns An array of listener functions.
97
+ */
98
+ listeners(eventName) {
99
+ const listenersSet = this._listenerStore.get(eventName);
100
+ if (!listenersSet)
101
+ return [];
102
+ return [...listenersSet.values()];
103
+ }
104
+ /**
105
+ * Returns the number of listeners for a given event.
106
+ * @param eventName The event name (key of E).
107
+ * @returns The number of listeners.
108
+ */
109
+ listenerCount(eventName) {
110
+ const listenersSet = this._listenerStore.get(eventName);
111
+ return listenersSet ? listenersSet.size : 0;
112
+ }
113
+ /**
114
+ * Removes all listeners for a given event, or all events if none is specified.
115
+ * @param eventName Optional. If omitted, clears all events’ listeners.
116
+ * @returns The emitter instance (for chaining).
117
+ */
118
+ removeAllListeners(eventName) {
119
+ if (eventName === void 0) {
120
+ for (const [eventName_, listenersSet] of this._listenerStore.entries()) {
121
+ for (const listener of listenersSet.values()) {
122
+ this.off(eventName_, listener);
123
+ }
124
+ }
125
+ this._listenerStore.clear();
126
+ } else {
127
+ const listenersSet = this._listenerStore.get(eventName);
128
+ if (listenersSet) {
129
+ for (const listener of listenersSet.values()) {
130
+ this.off(eventName, listener);
131
+ }
132
+ this._listenerStore.delete(eventName);
133
+ }
134
+ }
135
+ return this;
136
+ }
4
137
  }
5
- module.exports = randomId;
138
+ module.exports = EventEmitter;
@@ -1,138 +1,44 @@
1
1
  "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
- class EventEmitter {
6
- constructor() {
7
- __publicField(this, "_maxListeners", 100);
8
- /**
9
- * We store a set of the listeners for each event.
10
- */
11
- __publicField(this, "_listenerStore", /* @__PURE__ */ new Map());
12
- }
13
- setMaxListeners(max) {
14
- this._maxListeners = max;
15
- return this;
16
- }
17
- /**
18
- * Subscribe to an event with a listener function.
19
- * @param eventName The event name (key of E).
20
- * @param listener A function that receives the emitted arguments.
21
- * @returns The emitter instance (for chaining).
22
- */
23
- on(eventName, listener) {
24
- let listenersSet = this._listenerStore.get(eventName);
25
- if (!listenersSet) {
26
- listenersSet = /* @__PURE__ */ new Set();
27
- this._listenerStore.set(eventName, listenersSet);
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const createIndexProvider = require("./index.cjs5.js");
4
+ const get = require("./index.cjs25.js");
5
+ const getMatchingKeys = require("./index.cjs26.js");
6
+ const serializeValue = require("./index.cjs16.js");
7
+ function createExternalIndex(field, index) {
8
+ return createIndexProvider({
9
+ query(selector) {
10
+ const keys = getMatchingKeys(field, selector);
11
+ if (keys.include == null && keys.exclude == null)
12
+ return { matched: false };
13
+ const includedKeys = keys.include == null ? [...index.values()].reduce((memo, set) => [...memo, ...set], []) : keys.include.reduce((memo, key) => [...memo, ...index.get(key) || []], []);
14
+ const itemPositions = keys.exclude == null ? includedKeys : keys.exclude.reduce((memo, key) => memo.filter((i) => {
15
+ var _a;
16
+ return !((_a = index.get(key)) == null ? void 0 : _a.has(i));
17
+ }), includedKeys);
18
+ return {
19
+ matched: true,
20
+ positions: itemPositions,
21
+ fields: [field]
22
+ };
23
+ },
24
+ rebuild() {
28
25
  }
29
- listenersSet.add(listener);
30
- if (listenersSet.size > this._maxListeners) {
31
- console.warn(`Possible EventEmitter memory leak detected. ${listenersSet.size} ${String(eventName)} listeners added. Use emitter.setMaxListeners() to increase limit.`);
32
- }
33
- return this;
34
- }
35
- /**
36
- * Subscribe to an event with a listener function.
37
- * @param eventName The event name (key of E).
38
- * @param listener A function that receives the emitted arguments.
39
- * @returns The emitter instance (for chaining).
40
- */
41
- addListener(eventName, listener) {
42
- return this.on(eventName, listener);
43
- }
44
- /**
45
- * Subscribe to an event, handling it only once. Automatically removes
46
- * the listener after it fires the first time.
47
- * @param eventName The event name (key of E).
48
- * @param listener A function that receives the emitted arguments.
49
- * @returns The emitter instance (for chaining).
50
- */
51
- once(eventName, listener) {
52
- const onceWrapper = (...args) => {
53
- listener(...args);
54
- this.off(eventName, onceWrapper);
55
- };
56
- return this.on(eventName, onceWrapper);
57
- }
58
- /**
59
- * Unsubscribe a previously subscribed listener.
60
- * @param eventName The event name (key of E).
61
- * @param listener The original function passed to `on` or `once`.
62
- * @returns The emitter instance (for chaining).
63
- */
64
- off(eventName, listener) {
65
- const listenersSet = this._listenerStore.get(eventName);
66
- if (!listenersSet)
67
- return this;
68
- listenersSet.delete(listener);
69
- if (listenersSet.size === 0) {
70
- this._listenerStore.delete(eventName);
71
- }
72
- return this;
73
- }
74
- /**
75
- * Unsubscribe a previously subscribed listener.
76
- * @param eventName The event name (key of E).
77
- * @param listener The original function passed to `on` or `once`.
78
- * @returns The emitter instance (for chaining).
79
- */
80
- removeListener(eventName, listener) {
81
- return this.off(eventName, listener);
82
- }
83
- /**
84
- * Emit (dispatch) an event with a variable number of arguments.
85
- * @param eventName The event name (key of E).
86
- * @param args The arguments to pass to subscribed listeners.
87
- */
88
- emit(eventName, ...args) {
89
- this.listeners(eventName).forEach((listener) => {
90
- listener(...args);
91
- });
92
- }
93
- /**
94
- * Returns the array of listener functions currently registered for a given event.
95
- * @param eventName The event name (key of E).
96
- * @returns An array of listener functions.
97
- */
98
- listeners(eventName) {
99
- const listenersSet = this._listenerStore.get(eventName);
100
- if (!listenersSet)
101
- return [];
102
- return [...listenersSet.values()];
103
- }
104
- /**
105
- * Returns the number of listeners for a given event.
106
- * @param eventName The event name (key of E).
107
- * @returns The number of listeners.
108
- */
109
- listenerCount(eventName) {
110
- const listenersSet = this._listenerStore.get(eventName);
111
- return listenersSet ? listenersSet.size : 0;
112
- }
113
- /**
114
- * Removes all listeners for a given event, or all events if none is specified.
115
- * @param eventName Optional. If omitted, clears all events’ listeners.
116
- * @returns The emitter instance (for chaining).
117
- */
118
- removeAllListeners(eventName) {
119
- if (eventName === void 0) {
120
- for (const [eventName_, listenersSet] of this._listenerStore.entries()) {
121
- for (const listener of listenersSet.values()) {
122
- this.off(eventName_, listener);
123
- }
124
- }
125
- this._listenerStore.clear();
126
- } else {
127
- const listenersSet = this._listenerStore.get(eventName);
128
- if (listenersSet) {
129
- for (const listener of listenersSet.values()) {
130
- this.off(eventName, listener);
131
- }
132
- this._listenerStore.delete(eventName);
133
- }
26
+ });
27
+ }
28
+ function createIndex(field) {
29
+ const index = /* @__PURE__ */ new Map();
30
+ return {
31
+ ...createExternalIndex(field, index),
32
+ rebuild(items) {
33
+ index.clear();
34
+ items.forEach((item, i) => {
35
+ const value = serializeValue(get(item, field));
36
+ const current = index.get(value) || /* @__PURE__ */ new Set();
37
+ current.add(i);
38
+ index.set(value, current);
39
+ });
134
40
  }
135
- return this;
136
- }
41
+ };
137
42
  }
138
- module.exports = EventEmitter;
43
+ exports.createExternalIndex = createExternalIndex;
44
+ exports.default = createIndex;