@ereo/state 0.2.36 → 0.2.38
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/index.js +16 -1
- package/dist/signals.d.ts +4 -0
- package/dist/signals.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@ class Signal {
|
|
|
5
5
|
_subscribers = new Set;
|
|
6
6
|
_boundFire;
|
|
7
7
|
_disposers = [];
|
|
8
|
+
_disposed = false;
|
|
8
9
|
constructor(initialValue) {
|
|
9
10
|
this._value = initialValue;
|
|
10
11
|
this._boundFire = this._fireSubscribers.bind(this);
|
|
@@ -32,6 +33,7 @@ class Signal {
|
|
|
32
33
|
return mapped;
|
|
33
34
|
}
|
|
34
35
|
dispose() {
|
|
36
|
+
this._disposed = true;
|
|
35
37
|
for (const disposer of this._disposers) {
|
|
36
38
|
disposer();
|
|
37
39
|
}
|
|
@@ -39,6 +41,8 @@ class Signal {
|
|
|
39
41
|
this._subscribers.clear();
|
|
40
42
|
}
|
|
41
43
|
_notify() {
|
|
44
|
+
if (this._disposed)
|
|
45
|
+
return;
|
|
42
46
|
const deferred = _scheduleBatchNotification(this._boundFire);
|
|
43
47
|
if (!deferred) {
|
|
44
48
|
this._fireSubscribers();
|
|
@@ -123,7 +127,11 @@ class Store {
|
|
|
123
127
|
}
|
|
124
128
|
_notifyListeners() {
|
|
125
129
|
for (const listener of this._listeners) {
|
|
126
|
-
|
|
130
|
+
try {
|
|
131
|
+
listener();
|
|
132
|
+
} catch (e) {
|
|
133
|
+
console.error("Store listener error:", e);
|
|
134
|
+
}
|
|
127
135
|
}
|
|
128
136
|
}
|
|
129
137
|
get(key) {
|
|
@@ -144,6 +152,13 @@ class Store {
|
|
|
144
152
|
this._listeners.add(listener);
|
|
145
153
|
return () => this._listeners.delete(listener);
|
|
146
154
|
}
|
|
155
|
+
dispose() {
|
|
156
|
+
for (const unsub of this._internalUnsubs) {
|
|
157
|
+
unsub();
|
|
158
|
+
}
|
|
159
|
+
this._internalUnsubs = [];
|
|
160
|
+
this._listeners.clear();
|
|
161
|
+
}
|
|
147
162
|
entries() {
|
|
148
163
|
return this._state.entries();
|
|
149
164
|
}
|
package/dist/signals.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export declare class Signal<T> {
|
|
|
13
13
|
private readonly _boundFire;
|
|
14
14
|
/** Cleanup functions for upstream subscriptions (from map/computed) */
|
|
15
15
|
_disposers: (() => void)[];
|
|
16
|
+
/** Whether this signal has been disposed */
|
|
17
|
+
private _disposed;
|
|
16
18
|
constructor(initialValue: T);
|
|
17
19
|
/** Get current value (subscribes in reactive context) */
|
|
18
20
|
get(): T;
|
|
@@ -57,6 +59,8 @@ export declare class Store<T extends Record<string, unknown>> {
|
|
|
57
59
|
set<K extends keyof T>(key: K, value: T[K]): void;
|
|
58
60
|
/** Subscribe to any change in the store (value changes or new keys) */
|
|
59
61
|
subscribe(listener: () => void): () => void;
|
|
62
|
+
/** Dispose the store: unsubscribe all internal signal subscriptions and clear listeners */
|
|
63
|
+
dispose(): void;
|
|
60
64
|
/** Iterate over all signal entries */
|
|
61
65
|
entries(): IterableIterator<[string, Signal<unknown>]>;
|
|
62
66
|
/** Get current snapshot of all values */
|
package/dist/signals.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../src/signals.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,0BAA0B;AAC1B,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAExC,iCAAiC;AACjC,qBAAa,MAAM,CAAC,CAAC;IACnB,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,YAAY,CAAiC;IACrD,+CAA+C;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,uEAAuE;IACvE,UAAU,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAM;
|
|
1
|
+
{"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../src/signals.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ereo/state",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.38",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Enoch Kujem Abassey",
|
|
6
6
|
"homepage": "https://ereojs.github.io/ereoJS",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"typecheck": "tsc --noEmit"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@ereo/core": "
|
|
36
|
+
"@ereo/core": "workspace:*"
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
39
|
"react": "^18.0.0"
|