@ereo/state 0.2.37 → 0.2.39

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 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
- listener();
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 */
@@ -1 +1 @@
1
- {"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../src/signals.ts"],"names":[],"mappings":"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"}
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.37",
3
+ "version": "0.2.39",
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": "^0.2.37"
36
+ "@ereo/core": "^0.2.39"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "react": "^18.0.0"