@signaldb/core 2.0.0-beta.6 → 2.0.0-beta.8
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 +118 -84
- package/dist/AsyncDataAdapter.d.ts +4 -6
- package/dist/AutoFetchDataAdapter.d.ts +4 -6
- package/dist/Collection/Cursor.d.ts +3 -3
- package/dist/Collection/index.d.ts +8 -9
- package/dist/Collection/types.d.ts +2 -2
- package/dist/DataAdapter.d.ts +3 -4
- package/dist/DefaultDataAdapter.d.ts +3 -5
- package/dist/WorkerDataAdapter.d.ts +2 -4
- package/dist/WorkerDataAdapterHost.d.ts +5 -5
- package/dist/createIndex.d.ts +2 -2
- package/dist/createIndexProvider.d.ts +2 -2
- package/dist/createReactivityAdapter.d.ts +2 -2
- package/dist/createStorageAdapter.d.ts +1 -1
- package/dist/getIndexInfo.d.ts +3 -4
- package/dist/index.cjs.js +33 -34
- package/dist/index.mjs +17 -35
- package/dist/index10.cjs.js +23 -0
- package/dist/index10.mjs +21 -17
- package/dist/index11.cjs.js +45 -0
- package/dist/index11.mjs +44 -15
- package/dist/index12.cjs.js +22 -0
- package/dist/index12.mjs +21 -47
- package/dist/index13.cjs.js +45 -0
- package/dist/index13.mjs +44 -365
- package/dist/index14.cjs.js +86 -0
- package/dist/index14.mjs +85 -416
- package/dist/index15.cjs.js +15 -0
- package/dist/index15.mjs +14 -206
- package/dist/index16.cjs.js +136 -0
- package/dist/index16.mjs +135 -388
- package/dist/index17.cjs.js +47 -0
- package/dist/index17.mjs +45 -578
- package/dist/index18.cjs.js +15 -0
- package/dist/index18.mjs +14 -157
- package/dist/index19.cjs.js +23 -0
- package/dist/index19.mjs +22 -26
- package/dist/index2.cjs.js +33 -0
- package/dist/index2.mjs +32 -258
- package/dist/index20.cjs.js +37 -0
- package/dist/index20.mjs +36 -41
- package/dist/index21.cjs.js +35 -0
- package/dist/index21.mjs +34 -16
- package/dist/index22.cjs.js +25 -0
- package/dist/index22.mjs +24 -104
- package/dist/index23.cjs.js +19 -0
- package/dist/index23.mjs +18 -128
- package/dist/index24.cjs.js +342 -0
- package/dist/index24.mjs +340 -6
- package/dist/index25.cjs.js +519 -0
- package/dist/index25.mjs +518 -27
- package/dist/index26.cjs.js +11 -0
- package/dist/index26.mjs +10 -10
- package/dist/index27.cjs.js +11 -0
- package/dist/index27.mjs +10 -29
- package/dist/index28.cjs.js +90 -0
- package/dist/index28.mjs +88 -46
- package/dist/index29.cjs.js +370 -0
- package/dist/index29.mjs +369 -8
- package/dist/index3.cjs.js +19 -0
- package/dist/index3.mjs +18 -539
- package/dist/index30.cjs.js +72 -0
- package/dist/index30.mjs +71 -9
- package/dist/index31.cjs.js +191 -0
- package/dist/index31.mjs +190 -7
- package/dist/index32.cjs.js +21 -0
- package/dist/index32.mjs +20 -42
- package/dist/index33.cjs.js +336 -0
- package/dist/index33.mjs +335 -29
- package/dist/index34.cjs.js +539 -0
- package/dist/index34.mjs +537 -4
- package/dist/index4.cjs.js +150 -0
- package/dist/index4.mjs +149 -5
- package/dist/index5.cjs.js +254 -0
- package/dist/index5.mjs +252 -4
- package/dist/index6.cjs.js +125 -0
- package/dist/index6.mjs +124 -29
- package/dist/index7.cjs.js +33 -0
- package/dist/index7.mjs +32 -12
- package/dist/index8.cjs.js +12 -0
- package/dist/index8.mjs +10 -4
- package/dist/index9.cjs.js +11 -0
- package/dist/index9.mjs +10 -133
- package/dist/types/IndexProvider.d.ts +2 -2
- package/dist/types/Modifier.d.ts +1 -1
- package/dist/types/ReactivityAdapter.d.ts +1 -1
- package/dist/utils/createSignal.d.ts +2 -2
- package/dist/utils/getMatchingKeys.d.ts +2 -2
- package/dist/utils/isFieldExpression.d.ts +1 -1
- package/dist/utils/match.d.ts +1 -1
- package/dist/utils/modify.d.ts +1 -1
- package/dist/utils/queryId.d.ts +2 -2
- package/package.json +1 -1
- package/dist/index.cjs10.js +0 -18
- package/dist/index.cjs11.js +0 -15
- package/dist/index.cjs12.js +0 -48
- package/dist/index.cjs13.js +0 -365
- package/dist/index.cjs14.js +0 -416
- package/dist/index.cjs15.js +0 -206
- package/dist/index.cjs16.js +0 -388
- package/dist/index.cjs17.js +0 -579
- package/dist/index.cjs18.js +0 -157
- package/dist/index.cjs19.js +0 -26
- package/dist/index.cjs2.js +0 -259
- package/dist/index.cjs20.js +0 -42
- package/dist/index.cjs21.js +0 -16
- package/dist/index.cjs22.js +0 -104
- package/dist/index.cjs23.js +0 -129
- package/dist/index.cjs24.js +0 -7
- package/dist/index.cjs25.js +0 -27
- package/dist/index.cjs26.js +0 -10
- package/dist/index.cjs27.js +0 -29
- package/dist/index.cjs28.js +0 -46
- package/dist/index.cjs29.js +0 -8
- package/dist/index.cjs3.js +0 -540
- package/dist/index.cjs30.js +0 -9
- package/dist/index.cjs31.js +0 -7
- package/dist/index.cjs32.js +0 -42
- package/dist/index.cjs33.js +0 -29
- package/dist/index.cjs34.js +0 -5
- package/dist/index.cjs4.js +0 -5
- package/dist/index.cjs5.js +0 -5
- package/dist/index.cjs6.js +0 -29
- package/dist/index.cjs7.js +0 -12
- package/dist/index.cjs8.js +0 -5
- package/dist/index.cjs9.js +0 -133
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
//#region src/utils/EventEmitter.ts
|
|
2
|
+
/**
|
|
3
|
+
* A strongly‑typed EventEmitter.
|
|
4
|
+
*/
|
|
5
|
+
var EventEmitter = class {
|
|
6
|
+
_maxListeners = 100;
|
|
7
|
+
/**
|
|
8
|
+
* We store a set of the listeners for each event.
|
|
9
|
+
*/
|
|
10
|
+
_listenerStore = /* @__PURE__ */ new Map();
|
|
11
|
+
setMaxListeners(max) {
|
|
12
|
+
this._maxListeners = max;
|
|
13
|
+
return this;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Subscribe to an event with a listener function.
|
|
17
|
+
* @param eventName The event name (key of E).
|
|
18
|
+
* @param listener A function that receives the emitted arguments.
|
|
19
|
+
* @returns The emitter instance (for chaining).
|
|
20
|
+
*/
|
|
21
|
+
on(eventName, listener) {
|
|
22
|
+
let listenersSet = this._listenerStore.get(eventName);
|
|
23
|
+
if (!listenersSet) {
|
|
24
|
+
listenersSet = /* @__PURE__ */ new Set();
|
|
25
|
+
this._listenerStore.set(eventName, listenersSet);
|
|
26
|
+
}
|
|
27
|
+
listenersSet.add(listener);
|
|
28
|
+
if (listenersSet.size > this._maxListeners) console.warn(`Possible EventEmitter memory leak detected. ${listenersSet.size} ${String(eventName)} listeners added. Use emitter.setMaxListeners() to increase limit.`);
|
|
29
|
+
return this;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Subscribe to an event with a listener function.
|
|
33
|
+
* @param eventName The event name (key of E).
|
|
34
|
+
* @param listener A function that receives the emitted arguments.
|
|
35
|
+
* @returns The emitter instance (for chaining).
|
|
36
|
+
*/
|
|
37
|
+
addListener(eventName, listener) {
|
|
38
|
+
return this.on(eventName, listener);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Subscribe to an event, handling it only once. Automatically removes
|
|
42
|
+
* the listener after it fires the first time.
|
|
43
|
+
* @param eventName The event name (key of E).
|
|
44
|
+
* @param listener A function that receives the emitted arguments.
|
|
45
|
+
* @returns The emitter instance (for chaining).
|
|
46
|
+
*/
|
|
47
|
+
once(eventName, listener) {
|
|
48
|
+
const onceWrapper = ((...args) => {
|
|
49
|
+
listener(...args);
|
|
50
|
+
this.off(eventName, onceWrapper);
|
|
51
|
+
});
|
|
52
|
+
return this.on(eventName, onceWrapper);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Unsubscribe a previously subscribed listener.
|
|
56
|
+
* @param eventName The event name (key of E).
|
|
57
|
+
* @param listener The original function passed to `on` or `once`.
|
|
58
|
+
* @returns The emitter instance (for chaining).
|
|
59
|
+
*/
|
|
60
|
+
off(eventName, listener) {
|
|
61
|
+
const listenersSet = this._listenerStore.get(eventName);
|
|
62
|
+
if (!listenersSet) return this;
|
|
63
|
+
listenersSet.delete(listener);
|
|
64
|
+
if (listenersSet.size === 0) this._listenerStore.delete(eventName);
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Unsubscribe a previously subscribed listener.
|
|
69
|
+
* @param eventName The event name (key of E).
|
|
70
|
+
* @param listener The original function passed to `on` or `once`.
|
|
71
|
+
* @returns The emitter instance (for chaining).
|
|
72
|
+
*/
|
|
73
|
+
removeListener(eventName, listener) {
|
|
74
|
+
return this.off(eventName, listener);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Emit (dispatch) an event with a variable number of arguments.
|
|
78
|
+
* @param eventName The event name (key of E).
|
|
79
|
+
* @param args The arguments to pass to subscribed listeners.
|
|
80
|
+
*/
|
|
81
|
+
emit(eventName, ...args) {
|
|
82
|
+
this.listeners(eventName).forEach((listener) => {
|
|
83
|
+
listener(...args);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Returns the array of listener functions currently registered for a given event.
|
|
88
|
+
* @param eventName The event name (key of E).
|
|
89
|
+
* @returns An array of listener functions.
|
|
90
|
+
*/
|
|
91
|
+
listeners(eventName) {
|
|
92
|
+
const listenersSet = this._listenerStore.get(eventName);
|
|
93
|
+
if (!listenersSet) return [];
|
|
94
|
+
return [...listenersSet.values()];
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Returns the number of listeners for a given event.
|
|
98
|
+
* @param eventName The event name (key of E).
|
|
99
|
+
* @returns The number of listeners.
|
|
100
|
+
*/
|
|
101
|
+
listenerCount(eventName) {
|
|
102
|
+
const listenersSet = this._listenerStore.get(eventName);
|
|
103
|
+
return listenersSet ? listenersSet.size : 0;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Removes all listeners for a given event, or all events if none is specified.
|
|
107
|
+
* @param eventName Optional. If omitted, clears all events’ listeners.
|
|
108
|
+
* @returns The emitter instance (for chaining).
|
|
109
|
+
*/
|
|
110
|
+
removeAllListeners(eventName) {
|
|
111
|
+
if (eventName === void 0) {
|
|
112
|
+
for (const [eventName_, listenersSet] of this._listenerStore.entries()) for (const listener of listenersSet.values()) this.off(eventName_, listener);
|
|
113
|
+
this._listenerStore.clear();
|
|
114
|
+
} else {
|
|
115
|
+
const listenersSet = this._listenerStore.get(eventName);
|
|
116
|
+
if (listenersSet) {
|
|
117
|
+
for (const listener of listenersSet.values()) this.off(eventName, listener);
|
|
118
|
+
this._listenerStore.delete(eventName);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return this;
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
//#endregion
|
|
125
|
+
exports.default = EventEmitter;
|
package/dist/index6.mjs
CHANGED
|
@@ -1,30 +1,125 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
1
|
+
//#region src/utils/EventEmitter.ts
|
|
2
|
+
/**
|
|
3
|
+
* A strongly‑typed EventEmitter.
|
|
4
|
+
*/
|
|
5
|
+
var EventEmitter = class {
|
|
6
|
+
_maxListeners = 100;
|
|
7
|
+
/**
|
|
8
|
+
* We store a set of the listeners for each event.
|
|
9
|
+
*/
|
|
10
|
+
_listenerStore = /* @__PURE__ */ new Map();
|
|
11
|
+
setMaxListeners(max) {
|
|
12
|
+
this._maxListeners = max;
|
|
13
|
+
return this;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Subscribe to an event with a listener function.
|
|
17
|
+
* @param eventName The event name (key of E).
|
|
18
|
+
* @param listener A function that receives the emitted arguments.
|
|
19
|
+
* @returns The emitter instance (for chaining).
|
|
20
|
+
*/
|
|
21
|
+
on(eventName, listener) {
|
|
22
|
+
let listenersSet = this._listenerStore.get(eventName);
|
|
23
|
+
if (!listenersSet) {
|
|
24
|
+
listenersSet = /* @__PURE__ */ new Set();
|
|
25
|
+
this._listenerStore.set(eventName, listenersSet);
|
|
26
|
+
}
|
|
27
|
+
listenersSet.add(listener);
|
|
28
|
+
if (listenersSet.size > this._maxListeners) console.warn(`Possible EventEmitter memory leak detected. ${listenersSet.size} ${String(eventName)} listeners added. Use emitter.setMaxListeners() to increase limit.`);
|
|
29
|
+
return this;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Subscribe to an event with a listener function.
|
|
33
|
+
* @param eventName The event name (key of E).
|
|
34
|
+
* @param listener A function that receives the emitted arguments.
|
|
35
|
+
* @returns The emitter instance (for chaining).
|
|
36
|
+
*/
|
|
37
|
+
addListener(eventName, listener) {
|
|
38
|
+
return this.on(eventName, listener);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Subscribe to an event, handling it only once. Automatically removes
|
|
42
|
+
* the listener after it fires the first time.
|
|
43
|
+
* @param eventName The event name (key of E).
|
|
44
|
+
* @param listener A function that receives the emitted arguments.
|
|
45
|
+
* @returns The emitter instance (for chaining).
|
|
46
|
+
*/
|
|
47
|
+
once(eventName, listener) {
|
|
48
|
+
const onceWrapper = ((...args) => {
|
|
49
|
+
listener(...args);
|
|
50
|
+
this.off(eventName, onceWrapper);
|
|
51
|
+
});
|
|
52
|
+
return this.on(eventName, onceWrapper);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Unsubscribe a previously subscribed listener.
|
|
56
|
+
* @param eventName The event name (key of E).
|
|
57
|
+
* @param listener The original function passed to `on` or `once`.
|
|
58
|
+
* @returns The emitter instance (for chaining).
|
|
59
|
+
*/
|
|
60
|
+
off(eventName, listener) {
|
|
61
|
+
const listenersSet = this._listenerStore.get(eventName);
|
|
62
|
+
if (!listenersSet) return this;
|
|
63
|
+
listenersSet.delete(listener);
|
|
64
|
+
if (listenersSet.size === 0) this._listenerStore.delete(eventName);
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Unsubscribe a previously subscribed listener.
|
|
69
|
+
* @param eventName The event name (key of E).
|
|
70
|
+
* @param listener The original function passed to `on` or `once`.
|
|
71
|
+
* @returns The emitter instance (for chaining).
|
|
72
|
+
*/
|
|
73
|
+
removeListener(eventName, listener) {
|
|
74
|
+
return this.off(eventName, listener);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Emit (dispatch) an event with a variable number of arguments.
|
|
78
|
+
* @param eventName The event name (key of E).
|
|
79
|
+
* @param args The arguments to pass to subscribed listeners.
|
|
80
|
+
*/
|
|
81
|
+
emit(eventName, ...args) {
|
|
82
|
+
this.listeners(eventName).forEach((listener) => {
|
|
83
|
+
listener(...args);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Returns the array of listener functions currently registered for a given event.
|
|
88
|
+
* @param eventName The event name (key of E).
|
|
89
|
+
* @returns An array of listener functions.
|
|
90
|
+
*/
|
|
91
|
+
listeners(eventName) {
|
|
92
|
+
const listenersSet = this._listenerStore.get(eventName);
|
|
93
|
+
if (!listenersSet) return [];
|
|
94
|
+
return [...listenersSet.values()];
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Returns the number of listeners for a given event.
|
|
98
|
+
* @param eventName The event name (key of E).
|
|
99
|
+
* @returns The number of listeners.
|
|
100
|
+
*/
|
|
101
|
+
listenerCount(eventName) {
|
|
102
|
+
const listenersSet = this._listenerStore.get(eventName);
|
|
103
|
+
return listenersSet ? listenersSet.size : 0;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Removes all listeners for a given event, or all events if none is specified.
|
|
107
|
+
* @param eventName Optional. If omitted, clears all events’ listeners.
|
|
108
|
+
* @returns The emitter instance (for chaining).
|
|
109
|
+
*/
|
|
110
|
+
removeAllListeners(eventName) {
|
|
111
|
+
if (eventName === void 0) {
|
|
112
|
+
for (const [eventName_, listenersSet] of this._listenerStore.entries()) for (const listener of listenersSet.values()) this.off(eventName_, listener);
|
|
113
|
+
this._listenerStore.clear();
|
|
114
|
+
} else {
|
|
115
|
+
const listenersSet = this._listenerStore.get(eventName);
|
|
116
|
+
if (listenersSet) {
|
|
117
|
+
for (const listener of listenersSet.values()) this.off(eventName, listener);
|
|
118
|
+
this._listenerStore.delete(eventName);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return this;
|
|
122
|
+
}
|
|
30
123
|
};
|
|
124
|
+
//#endregion
|
|
125
|
+
export { EventEmitter as default };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
//#region src/utils/createSignal.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a reactive signal for managing state and triggering dependencies.
|
|
4
|
+
* The signal holds a value and provides methods to get and set the value,
|
|
5
|
+
* with optional equality checks and dependency tracking.
|
|
6
|
+
* @template T - The type of the value held by the signal.
|
|
7
|
+
* @param reactivityAdapter - An optional reactivity adapter for managing dependencies.
|
|
8
|
+
* @param initialValue - The initial value of the signal.
|
|
9
|
+
* @param isEqual - A custom equality function to determine if the new value is different
|
|
10
|
+
* from the current value (default is `Object.is`).
|
|
11
|
+
* @returns A signal object with `get` and `set` methods to manage the value.
|
|
12
|
+
*/
|
|
13
|
+
function createSignal(reactivityAdapter, initialValue, isEqual = Object.is) {
|
|
14
|
+
let value = initialValue;
|
|
15
|
+
const dependency = reactivityAdapter?.create();
|
|
16
|
+
const isInReactiveScope = () => {
|
|
17
|
+
if (!reactivityAdapter?.isInScope) return true;
|
|
18
|
+
return reactivityAdapter.isInScope();
|
|
19
|
+
};
|
|
20
|
+
return {
|
|
21
|
+
get() {
|
|
22
|
+
if (dependency && isInReactiveScope()) dependency.depend();
|
|
23
|
+
return value;
|
|
24
|
+
},
|
|
25
|
+
set(newValue) {
|
|
26
|
+
if (isEqual(value, newValue)) return;
|
|
27
|
+
value = newValue;
|
|
28
|
+
if (dependency) dependency.notify();
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
exports.default = createSignal;
|
package/dist/index7.mjs
CHANGED
|
@@ -1,13 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
//#region src/utils/createSignal.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a reactive signal for managing state and triggering dependencies.
|
|
4
|
+
* The signal holds a value and provides methods to get and set the value,
|
|
5
|
+
* with optional equality checks and dependency tracking.
|
|
6
|
+
* @template T - The type of the value held by the signal.
|
|
7
|
+
* @param reactivityAdapter - An optional reactivity adapter for managing dependencies.
|
|
8
|
+
* @param initialValue - The initial value of the signal.
|
|
9
|
+
* @param isEqual - A custom equality function to determine if the new value is different
|
|
10
|
+
* from the current value (default is `Object.is`).
|
|
11
|
+
* @returns A signal object with `get` and `set` methods to manage the value.
|
|
12
|
+
*/
|
|
13
|
+
function createSignal(reactivityAdapter, initialValue, isEqual = Object.is) {
|
|
14
|
+
let value = initialValue;
|
|
15
|
+
const dependency = reactivityAdapter?.create();
|
|
16
|
+
const isInReactiveScope = () => {
|
|
17
|
+
if (!reactivityAdapter?.isInScope) return true;
|
|
18
|
+
return reactivityAdapter.isInScope();
|
|
19
|
+
};
|
|
20
|
+
return {
|
|
21
|
+
get() {
|
|
22
|
+
if (dependency && isInReactiveScope()) dependency.depend();
|
|
23
|
+
return value;
|
|
24
|
+
},
|
|
25
|
+
set(newValue) {
|
|
26
|
+
if (isEqual(value, newValue)) return;
|
|
27
|
+
value = newValue;
|
|
28
|
+
if (dependency) dependency.notify();
|
|
29
|
+
}
|
|
30
|
+
};
|
|
10
31
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
};
|
|
32
|
+
//#endregion
|
|
33
|
+
export { createSignal as default };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
//#region src/utils/randomId.ts
|
|
2
|
+
/**
|
|
3
|
+
* creates a random id
|
|
4
|
+
* @returns a random string of 16 characters
|
|
5
|
+
* @example
|
|
6
|
+
* randomId() // '1234567890abcdef'
|
|
7
|
+
*/
|
|
8
|
+
function randomId() {
|
|
9
|
+
return Array.from({ length: 16 }, () => "abcdefghijklmnopqrstuvwxyz0123456789"[Math.floor(Math.random() * 36)]).join("");
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
exports.default = randomId;
|
package/dist/index8.mjs
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
|
+
//#region src/utils/randomId.ts
|
|
2
|
+
/**
|
|
3
|
+
* creates a random id
|
|
4
|
+
* @returns a random string of 16 characters
|
|
5
|
+
* @example
|
|
6
|
+
* randomId() // '1234567890abcdef'
|
|
7
|
+
*/
|
|
1
8
|
function randomId() {
|
|
2
|
-
|
|
9
|
+
return Array.from({ length: 16 }, () => "abcdefghijklmnopqrstuvwxyz0123456789"[Math.floor(Math.random() * 36)]).join("");
|
|
3
10
|
}
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
};
|
|
11
|
+
//#endregion
|
|
12
|
+
export { randomId as default };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/createIndexProvider.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates an IndexProvider based on the given definition.
|
|
4
|
+
* @param definition - The definition of the IndexProvider.
|
|
5
|
+
* @returns The created IndexProvider.
|
|
6
|
+
*/
|
|
7
|
+
function createIndexProvider(definition) {
|
|
8
|
+
return definition;
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
exports.default = createIndexProvider;
|
package/dist/index9.mjs
CHANGED
|
@@ -1,134 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
return this;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Subscribe to an event with a listener function.
|
|
13
|
-
* @param eventName The event name (key of E).
|
|
14
|
-
* @param listener A function that receives the emitted arguments.
|
|
15
|
-
* @returns The emitter instance (for chaining).
|
|
16
|
-
*/
|
|
17
|
-
on(eventName, listener) {
|
|
18
|
-
let listenersSet = this._listenerStore.get(eventName);
|
|
19
|
-
if (!listenersSet) {
|
|
20
|
-
listenersSet = /* @__PURE__ */ new Set();
|
|
21
|
-
this._listenerStore.set(eventName, listenersSet);
|
|
22
|
-
}
|
|
23
|
-
listenersSet.add(listener);
|
|
24
|
-
if (listenersSet.size > this._maxListeners) {
|
|
25
|
-
console.warn(`Possible EventEmitter memory leak detected. ${listenersSet.size} ${String(eventName)} listeners added. Use emitter.setMaxListeners() to increase limit.`);
|
|
26
|
-
}
|
|
27
|
-
return this;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Subscribe to an event with a listener function.
|
|
31
|
-
* @param eventName The event name (key of E).
|
|
32
|
-
* @param listener A function that receives the emitted arguments.
|
|
33
|
-
* @returns The emitter instance (for chaining).
|
|
34
|
-
*/
|
|
35
|
-
addListener(eventName, listener) {
|
|
36
|
-
return this.on(eventName, listener);
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Subscribe to an event, handling it only once. Automatically removes
|
|
40
|
-
* the listener after it fires the first time.
|
|
41
|
-
* @param eventName The event name (key of E).
|
|
42
|
-
* @param listener A function that receives the emitted arguments.
|
|
43
|
-
* @returns The emitter instance (for chaining).
|
|
44
|
-
*/
|
|
45
|
-
once(eventName, listener) {
|
|
46
|
-
const onceWrapper = ((...args) => {
|
|
47
|
-
listener(...args);
|
|
48
|
-
this.off(eventName, onceWrapper);
|
|
49
|
-
});
|
|
50
|
-
return this.on(eventName, onceWrapper);
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Unsubscribe a previously subscribed listener.
|
|
54
|
-
* @param eventName The event name (key of E).
|
|
55
|
-
* @param listener The original function passed to `on` or `once`.
|
|
56
|
-
* @returns The emitter instance (for chaining).
|
|
57
|
-
*/
|
|
58
|
-
off(eventName, listener) {
|
|
59
|
-
const listenersSet = this._listenerStore.get(eventName);
|
|
60
|
-
if (!listenersSet)
|
|
61
|
-
return this;
|
|
62
|
-
listenersSet.delete(listener);
|
|
63
|
-
if (listenersSet.size === 0) {
|
|
64
|
-
this._listenerStore.delete(eventName);
|
|
65
|
-
}
|
|
66
|
-
return this;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Unsubscribe a previously subscribed listener.
|
|
70
|
-
* @param eventName The event name (key of E).
|
|
71
|
-
* @param listener The original function passed to `on` or `once`.
|
|
72
|
-
* @returns The emitter instance (for chaining).
|
|
73
|
-
*/
|
|
74
|
-
removeListener(eventName, listener) {
|
|
75
|
-
return this.off(eventName, listener);
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Emit (dispatch) an event with a variable number of arguments.
|
|
79
|
-
* @param eventName The event name (key of E).
|
|
80
|
-
* @param args The arguments to pass to subscribed listeners.
|
|
81
|
-
*/
|
|
82
|
-
emit(eventName, ...args) {
|
|
83
|
-
this.listeners(eventName).forEach((listener) => {
|
|
84
|
-
listener(...args);
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Returns the array of listener functions currently registered for a given event.
|
|
89
|
-
* @param eventName The event name (key of E).
|
|
90
|
-
* @returns An array of listener functions.
|
|
91
|
-
*/
|
|
92
|
-
listeners(eventName) {
|
|
93
|
-
const listenersSet = this._listenerStore.get(eventName);
|
|
94
|
-
if (!listenersSet)
|
|
95
|
-
return [];
|
|
96
|
-
return [...listenersSet.values()];
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Returns the number of listeners for a given event.
|
|
100
|
-
* @param eventName The event name (key of E).
|
|
101
|
-
* @returns The number of listeners.
|
|
102
|
-
*/
|
|
103
|
-
listenerCount(eventName) {
|
|
104
|
-
const listenersSet = this._listenerStore.get(eventName);
|
|
105
|
-
return listenersSet ? listenersSet.size : 0;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Removes all listeners for a given event, or all events if none is specified.
|
|
109
|
-
* @param eventName Optional. If omitted, clears all events’ listeners.
|
|
110
|
-
* @returns The emitter instance (for chaining).
|
|
111
|
-
*/
|
|
112
|
-
removeAllListeners(eventName) {
|
|
113
|
-
if (eventName === void 0) {
|
|
114
|
-
for (const [eventName_, listenersSet] of this._listenerStore.entries()) {
|
|
115
|
-
for (const listener of listenersSet.values()) {
|
|
116
|
-
this.off(eventName_, listener);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
this._listenerStore.clear();
|
|
120
|
-
} else {
|
|
121
|
-
const listenersSet = this._listenerStore.get(eventName);
|
|
122
|
-
if (listenersSet) {
|
|
123
|
-
for (const listener of listenersSet.values()) {
|
|
124
|
-
this.off(eventName, listener);
|
|
125
|
-
}
|
|
126
|
-
this._listenerStore.delete(eventName);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
return this;
|
|
130
|
-
}
|
|
1
|
+
//#region src/createIndexProvider.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates an IndexProvider based on the given definition.
|
|
4
|
+
* @param definition - The definition of the IndexProvider.
|
|
5
|
+
* @returns The created IndexProvider.
|
|
6
|
+
*/
|
|
7
|
+
function createIndexProvider(definition) {
|
|
8
|
+
return definition;
|
|
131
9
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
};
|
|
10
|
+
//#endregion
|
|
11
|
+
export { createIndexProvider as default };
|
package/dist/types/Modifier.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { DotNotation, GetType } from './Selector';
|
|
2
2
|
type Dictionary<T> = Record<string, T>;
|
|
3
3
|
type PartialMapTo<T, M> = Partial<Record<DotNotation<T>, M>> & Dictionary<M>;
|
|
4
4
|
type OnlyElementsOfArrays<T> = T extends any[] ? Partial<T[0]> : never;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { default as ReactivityAdapter } from '../types/ReactivityAdapter';
|
|
2
|
+
import { default as Signal } from '../types/Signal';
|
|
3
3
|
/**
|
|
4
4
|
* Creates a reactive signal for managing state and triggering dependencies.
|
|
5
5
|
* The signal holds a value and provides methods to get and set the value,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { BaseItem } from '../Collection/types';
|
|
2
|
+
import { FlatSelector } from '../types/Selector';
|
|
3
3
|
type KeyResult = {
|
|
4
4
|
include: (string | null)[] | null;
|
|
5
5
|
exclude: (string | null)[] | null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { FieldExpression } from '../types/Selector';
|
|
2
2
|
/**
|
|
3
3
|
* Determines whether a given object is a valid field expression.
|
|
4
4
|
* A field expression is an object containing query operators supported by MongoDB-style queries.
|
package/dist/utils/match.d.ts
CHANGED
package/dist/utils/modify.d.ts
CHANGED
package/dist/utils/queryId.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { QueryOptions } from '../DataAdapter';
|
|
2
|
+
import { default as Selector } from '../types/Selector';
|
|
3
3
|
/**
|
|
4
4
|
* Generates a unique identifier for a query based on its selector and options.
|
|
5
5
|
* @param selector - The selector object.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@signaldb/core",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.8",
|
|
4
4
|
"description": "SignalDB is a client-side database that provides a simple MongoDB-like interface to the data with first-class typescript support to achieve an optimistic UI. Data persistence can be achieved by using storage providers that store the data through a JSON interface to places such as localStorage.",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "rimraf dist && vite build",
|
package/dist/index.cjs10.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
function get(value, path) {
|
|
3
|
-
const normalized = path.replaceAll(/\[(\w+)\]/g, ".$1");
|
|
4
|
-
if (normalized.includes("..") || normalized.startsWith(".") || normalized.endsWith(".")) {
|
|
5
|
-
return;
|
|
6
|
-
}
|
|
7
|
-
const segments = normalized.split(".");
|
|
8
|
-
let current = value;
|
|
9
|
-
for (const key of segments) {
|
|
10
|
-
if (current == null)
|
|
11
|
-
return;
|
|
12
|
-
current = current[key];
|
|
13
|
-
}
|
|
14
|
-
if (current === void 0)
|
|
15
|
-
return;
|
|
16
|
-
return current;
|
|
17
|
-
}
|
|
18
|
-
module.exports = get;
|
package/dist/index.cjs11.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
function serializeValue(value) {
|
|
3
|
-
if (value == null)
|
|
4
|
-
return null;
|
|
5
|
-
if (typeof value === "string")
|
|
6
|
-
return value;
|
|
7
|
-
if (typeof value === "number")
|
|
8
|
-
return value.toString();
|
|
9
|
-
if (typeof value === "boolean")
|
|
10
|
-
return value.toString();
|
|
11
|
-
if (value instanceof Date)
|
|
12
|
-
return value.toISOString();
|
|
13
|
-
return JSON.stringify(value);
|
|
14
|
-
}
|
|
15
|
-
module.exports = serializeValue;
|