@veams/status-quo 1.3.2 → 1.4.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 (34) hide show
  1. package/README.md +10 -3
  2. package/dist/hooks/__tests__/state-selector.spec.js +22 -17
  3. package/dist/hooks/__tests__/state-selector.spec.js.map +1 -1
  4. package/dist/hooks/__tests__/state-singleton.spec.js +1 -1
  5. package/dist/hooks/__tests__/state-singleton.spec.js.map +1 -1
  6. package/dist/hooks/state-subscription-selector.d.ts +2 -4
  7. package/dist/hooks/state-subscription-selector.js +3 -11
  8. package/dist/hooks/state-subscription-selector.js.map +1 -1
  9. package/dist/store/__tests__/signal-state-handler.spec.js +40 -4
  10. package/dist/store/__tests__/signal-state-handler.spec.js.map +1 -1
  11. package/dist/store/base-state-handler.d.ts +7 -4
  12. package/dist/store/base-state-handler.js +12 -3
  13. package/dist/store/base-state-handler.js.map +1 -1
  14. package/dist/store/observable-state-handler.d.ts +1 -0
  15. package/dist/store/observable-state-handler.js +2 -2
  16. package/dist/store/observable-state-handler.js.map +1 -1
  17. package/dist/store/signal-state-handler.d.ts +2 -2
  18. package/dist/store/signal-state-handler.js +1 -1
  19. package/dist/store/signal-state-handler.js.map +1 -1
  20. package/dist/types/types.d.ts +2 -1
  21. package/dist/utils/selector-cache.d.ts +13 -0
  22. package/dist/utils/selector-cache.js +22 -0
  23. package/dist/utils/selector-cache.js.map +1 -0
  24. package/package.json +1 -1
  25. package/playground/src/App.tsx +2 -1
  26. package/src/hooks/__tests__/state-selector.spec.tsx +31 -20
  27. package/src/hooks/__tests__/state-singleton.spec.tsx +1 -1
  28. package/src/hooks/state-subscription-selector.tsx +5 -25
  29. package/src/store/__tests__/signal-state-handler.spec.ts +64 -7
  30. package/src/store/base-state-handler.ts +39 -5
  31. package/src/store/observable-state-handler.ts +5 -3
  32. package/src/store/signal-state-handler.ts +4 -4
  33. package/src/types/types.ts +2 -1
  34. package/src/utils/selector-cache.ts +43 -0
package/README.md CHANGED
@@ -195,7 +195,8 @@ class AppSignalStore extends SignalStateHandler<AppState, AppActions> {
195
195
 
196
196
  this.bindSubscribable(
197
197
  { subscribe: this.combined.subscribe.bind(this.combined), getSnapshot: () => this.combined.value },
198
- (nextState) => this.setState(nextState, 'sync-combined')
198
+ (nextState) => this.setState(nextState, 'sync-combined'),
199
+ (value) => value
199
200
  );
200
201
  }
201
202
  }
@@ -385,7 +386,8 @@ Required interface implemented by all handlers.
385
386
 
386
387
  ```ts
387
388
  interface StateSubscriptionHandler<V, A> {
388
- subscribe: (listener: () => void) => () => void;
389
+ subscribe(listener: () => void): () => void;
390
+ subscribe(listener: (value: V) => void): () => void;
389
391
  getSnapshot: () => V;
390
392
  destroy: () => void;
391
393
  getInitialState: () => V;
@@ -410,6 +412,7 @@ Public methods:
410
412
  - `getSnapshot(): S`
411
413
  - `setState(next: Partial<S>, actionName = 'change'): void`
412
414
  - `subscribe(listener: () => void): () => void` (abstract)
415
+ - `subscribe(listener: (value: S) => void): () => void` (abstract)
413
416
  - `destroy(): void`
414
417
  - `getActions(): A` (abstract)
415
418
 
@@ -418,8 +421,9 @@ Protected helpers:
418
421
  - `getStateValue(): S` (abstract)
419
422
  - `setStateValue(next: S): void` (abstract)
420
423
  - `initDevTools(options?: { enabled?: boolean; namespace: string }): void`
421
- - `bindSubscribable<T>(service: { subscribe: (listener: (value: T) => void) => () => void; getSnapshot?: () => T }, onChange: (value: T) => void): void`
424
+ - `bindSubscribable<T, Sel>(service: { subscribe: (listener: (value: T) => void) => () => void; getSnapshot?: () => T }, onChange: (value: Sel) => void, selector: (value: T) => Sel, isEqual?: (current: Sel, next: Sel) => boolean): void`
422
425
  - Registers the subscription on `this.subscriptions` and invokes `onChange` with the current snapshot when available.
426
+ - `onChange` is only called when selected value changes according to `isEqual` (default `Object.is`).
423
427
 
424
428
  ### `ObservableStateHandler<S, A>`
425
429
 
@@ -450,11 +454,13 @@ Public methods:
450
454
  - `getStateItemAsObservable(key: keyof S): Observable<S[keyof S]>`
451
455
  - `getObservable(key: keyof S): Observable<S[keyof S]>`
452
456
  - `subscribe(listener: () => void): () => void`
457
+ - `subscribe(listener: (value: S) => void): () => void`
453
458
 
454
459
  Notes:
455
460
  - The observable stream uses `distinctUntilChanged` by default.
456
461
  - Distinct behavior can be configured globally via `setupStatusQuo` or per handler via `options.distinct`.
457
462
  - `subscribe` does not fire for the initial value; it only fires on subsequent changes.
463
+ - Subscribers receive the next state snapshot as a callback argument.
458
464
 
459
465
  ### `SignalStateHandler<S, A>`
460
466
 
@@ -483,6 +489,7 @@ Public methods:
483
489
 
484
490
  - `getSignal(): Signal<S>`
485
491
  - `subscribe(listener: () => void): () => void`
492
+ - `subscribe(listener: (value: S) => void): () => void`
486
493
 
487
494
  Notes:
488
495
  - Distinct behavior defaults to enabled.
@@ -16,12 +16,13 @@ class TestStateHandler {
16
16
  this.initialState = initialState;
17
17
  this.state = initialState;
18
18
  }
19
- subscribe = (listener) => {
20
- this.listeners.add(listener);
19
+ subscribe(listener) {
20
+ const typedListener = listener;
21
+ this.listeners.add(typedListener);
21
22
  return () => {
22
- this.listeners.delete(listener);
23
+ this.listeners.delete(typedListener);
23
24
  };
24
- };
25
+ }
25
26
  getSnapshot = () => {
26
27
  return this.state;
27
28
  };
@@ -50,7 +51,8 @@ class TestStateHandler {
50
51
  };
51
52
  };
52
53
  emitStateChange() {
53
- this.listeners.forEach((listener) => listener());
54
+ const nextState = this.state;
55
+ this.listeners.forEach((listener) => listener(nextState));
54
56
  }
55
57
  }
56
58
  class CounterStateHandler {
@@ -62,12 +64,13 @@ class CounterStateHandler {
62
64
  this.initialState = { count: initialCount };
63
65
  this.state = this.initialState;
64
66
  }
65
- subscribe = (listener) => {
66
- this.listeners.add(listener);
67
+ subscribe(listener) {
68
+ const typedListener = listener;
69
+ this.listeners.add(typedListener);
67
70
  return () => {
68
- this.listeners.delete(listener);
71
+ this.listeners.delete(typedListener);
69
72
  };
70
- };
73
+ }
71
74
  getSnapshot = () => {
72
75
  return this.state;
73
76
  };
@@ -80,7 +83,8 @@ class CounterStateHandler {
80
83
  this.state = {
81
84
  count: this.state.count + 1,
82
85
  };
83
- this.listeners.forEach((listener) => listener());
86
+ const nextState = this.state;
87
+ this.listeners.forEach((listener) => listener(nextState));
84
88
  },
85
89
  };
86
90
  };
@@ -101,20 +105,21 @@ class CounterMirrorStateHandler {
101
105
  mirroredCount: initialCounterState.count,
102
106
  };
103
107
  this.state = this.initialState;
104
- this.unsubscribeFromCounter = counterStateHandler.subscribe(() => {
105
- const nextCounterState = counterStateHandler.getSnapshot();
108
+ this.unsubscribeFromCounter = counterStateHandler.subscribe((nextCounterState) => {
106
109
  this.state = {
107
110
  mirroredCount: nextCounterState.count,
108
111
  };
109
- this.listeners.forEach((listener) => listener());
112
+ const nextMirrorState = this.state;
113
+ this.listeners.forEach((listener) => listener(nextMirrorState));
110
114
  });
111
115
  }
112
- subscribe = (listener) => {
113
- this.listeners.add(listener);
116
+ subscribe(listener) {
117
+ const typedListener = listener;
118
+ this.listeners.add(typedListener);
114
119
  return () => {
115
- this.listeners.delete(listener);
120
+ this.listeners.delete(typedListener);
116
121
  };
117
- };
122
+ }
118
123
  getSnapshot = () => {
119
124
  return this.state;
120
125
  };
@@ -1 +1 @@
1
- {"version":3,"file":"state-selector.spec.js","sourceRoot":"","sources":["../../../src/hooks/__tests__/state-selector.spec.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state-selector.spec.js","sourceRoot":"","sources":["../../../src/hooks/__tests__/state-selector.spec.tsx"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ const createStateHandler = (value) => {
7
7
  const snapshot = { value };
8
8
  const actions = { noop: jest.fn() };
9
9
  return {
10
- subscribe: () => () => undefined,
10
+ subscribe: (_listener) => () => undefined,
11
11
  getSnapshot: () => snapshot,
12
12
  getInitialState: () => snapshot,
13
13
  getActions: () => actions,
@@ -1 +1 @@
1
- {"version":3,"file":"state-singleton.spec.js","sourceRoot":"","sources":["../../../src/hooks/__tests__/state-singleton.spec.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state-singleton.spec.js","sourceRoot":"","sources":["../../../src/hooks/__tests__/state-singleton.spec.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,3 @@
1
1
  import type { StateSubscriptionHandler } from '../types/types.js';
2
- type SelectorFn<State, SelectedState> = (state: State) => SelectedState;
3
- type EqualityFn<SelectedState> = (current: SelectedState, next: SelectedState) => boolean;
4
- export declare function useStateSubscriptionSelector<V, A, Sel>(stateSubscriptionHandler: StateSubscriptionHandler<V, A>, selector: SelectorFn<V, Sel>, isEqual?: EqualityFn<Sel>, destroyOnCleanup?: boolean): Sel;
5
- export {};
2
+ import type { EqualityFn, Selector } from '../utils/selector-cache.js';
3
+ export declare function useStateSubscriptionSelector<V, A, Sel>(stateSubscriptionHandler: StateSubscriptionHandler<V, A>, selector: Selector<V, Sel>, isEqual?: EqualityFn<Sel>, destroyOnCleanup?: boolean): Sel;
@@ -1,4 +1,5 @@
1
1
  import { useCallback, useMemo, useSyncExternalStore } from 'react';
2
+ import { createSelectorCache, selectWithCache } from '../utils/selector-cache.js';
2
3
  const deferredDestroyMap = new WeakMap();
3
4
  function getDeferredDestroyState(stateSubscriptionHandler) {
4
5
  const existingState = deferredDestroyMap.get(stateSubscriptionHandler);
@@ -13,10 +14,7 @@ function getDeferredDestroyState(stateSubscriptionHandler) {
13
14
  return nextState;
14
15
  }
15
16
  export function useStateSubscriptionSelector(stateSubscriptionHandler, selector, isEqual = Object.is, destroyOnCleanup = true) {
16
- const selectorCache = useMemo(() => ({
17
- hasValue: false,
18
- value: undefined,
19
- }), [stateSubscriptionHandler]);
17
+ const selectorCache = useMemo(() => createSelectorCache(), [stateSubscriptionHandler]);
20
18
  const subscribe = useCallback((listener) => {
21
19
  const sharedStateSubscriptionHandler = stateSubscriptionHandler;
22
20
  const deferredDestroyState = getDeferredDestroyState(sharedStateSubscriptionHandler);
@@ -52,13 +50,7 @@ export function useStateSubscriptionSelector(stateSubscriptionHandler, selector,
52
50
  };
53
51
  }, [destroyOnCleanup, stateSubscriptionHandler]);
54
52
  const selectSnapshot = useCallback((snapshot) => {
55
- const nextSelection = selector(snapshot);
56
- if (selectorCache.hasValue && isEqual(selectorCache.value, nextSelection)) {
57
- return selectorCache.value;
58
- }
59
- selectorCache.hasValue = true;
60
- selectorCache.value = nextSelection;
61
- return nextSelection;
53
+ return selectWithCache(selectorCache, snapshot, selector, isEqual).value;
62
54
  }, [isEqual, selector, selectorCache]);
63
55
  const getSnapshot = useCallback(() => selectSnapshot(stateSubscriptionHandler.getSnapshot()), [selectSnapshot, stateSubscriptionHandler]);
64
56
  const getServerSnapshot = useCallback(() => selectSnapshot(stateSubscriptionHandler.getInitialState()), [selectSnapshot, stateSubscriptionHandler]);
@@ -1 +1 @@
1
- {"version":3,"file":"state-subscription-selector.js","sourceRoot":"","sources":["../../src/hooks/state-subscription-selector.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state-subscription-selector.js","sourceRoot":"","sources":["../../src/hooks/state-subscription-selector.tsx"],"names":[],"mappings":"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"}
@@ -56,13 +56,31 @@ class CounterSignalBridgeStateHandler extends SignalStateHandler {
56
56
  },
57
57
  });
58
58
  const counterStateHandler = counterSingleton.getInstance();
59
- this.bindSubscribable({
60
- subscribe: (listener) => counterStateHandler.subscribe(() => listener(counterStateHandler.getSnapshot())),
61
- getSnapshot: () => counterStateHandler.getSnapshot(),
62
- }, (nextCounterState) => {
59
+ this.bindSubscribable(counterStateHandler, (nextCounterState) => {
63
60
  onCounterSync(nextCounterState);
64
61
  this.setState({ count: nextCounterState.count }, 'sync-counter');
62
+ }, (counterState) => counterState);
63
+ }
64
+ getActions() {
65
+ return {
66
+ noop: () => undefined,
67
+ };
68
+ }
69
+ }
70
+ class CounterSignalBucketBridgeStateHandler extends SignalStateHandler {
71
+ constructor(counterSingleton, onCounterSync) {
72
+ super({
73
+ initialState: {
74
+ bucket: -1,
75
+ },
65
76
  });
77
+ const counterStateHandler = counterSingleton.getInstance();
78
+ this.bindSubscribable(counterStateHandler, (nextSelection) => {
79
+ onCounterSync(nextSelection);
80
+ this.setState({ bucket: nextSelection.bucket }, 'sync-counter-bucket');
81
+ }, (counterState) => ({
82
+ bucket: Math.floor(counterState.count / 2),
83
+ }), (current, next) => current.bucket === next.bucket);
66
84
  }
67
85
  getActions() {
68
86
  return {
@@ -188,5 +206,23 @@ describe('Signal State Handler', () => {
188
206
  expect(bridgeStateHandler.getState()).toStrictEqual({ count: 2 });
189
207
  bridgeStateHandler.destroy();
190
208
  });
209
+ it('should support selector + equality filtering for bindSubscribable', () => {
210
+ const counterSingleton = makeStateSingleton(() => new CounterSignalStateHandler(0), {
211
+ destroyOnNoConsumers: false,
212
+ });
213
+ const syncSpy = jest.fn();
214
+ const bridgeStateHandler = new CounterSignalBucketBridgeStateHandler(counterSingleton, syncSpy);
215
+ const counterStateHandler = counterSingleton.getInstance();
216
+ counterStateHandler.getActions().increase(); // count 1 -> bucket 0 (no change)
217
+ counterStateHandler.getActions().increase(); // count 2 -> bucket 1
218
+ counterStateHandler.getActions().increase(); // count 3 -> bucket 1 (no change)
219
+ counterStateHandler.getActions().increase(); // count 4 -> bucket 2
220
+ expect(syncSpy).toHaveBeenCalledTimes(3);
221
+ expect(syncSpy).toHaveBeenNthCalledWith(1, { bucket: 0 });
222
+ expect(syncSpy).toHaveBeenNthCalledWith(2, { bucket: 1 });
223
+ expect(syncSpy).toHaveBeenNthCalledWith(3, { bucket: 2 });
224
+ expect(bridgeStateHandler.getState()).toStrictEqual({ bucket: 2 });
225
+ bridgeStateHandler.destroy();
226
+ });
191
227
  });
192
228
  //# sourceMappingURL=signal-state-handler.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signal-state-handler.spec.js","sourceRoot":"","sources":["../../../src/store/__tests__/signal-state-handler.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signal-state-handler.spec.js","sourceRoot":"","sources":["../../../src/store/__tests__/signal-state-handler.spec.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,14 @@
1
1
  import type { StateSubscriptionHandler } from '../types/types.js';
2
2
  import type { DevTools } from './dev-tools.js';
3
+ import type { EqualityFn, Selector } from '../utils/selector-cache.js';
3
4
  type DevToolsOptions = {
4
5
  enabled?: boolean;
5
6
  namespace: string;
6
7
  };
8
+ type Subscribable<T> = {
9
+ subscribe: (listener: (value: T) => void) => () => void;
10
+ getSnapshot?: () => T;
11
+ };
7
12
  export declare abstract class BaseStateHandler<S, A> implements StateSubscriptionHandler<S, A> {
8
13
  protected readonly initialState: S;
9
14
  protected devTools: DevTools | null;
@@ -19,11 +24,9 @@ export declare abstract class BaseStateHandler<S, A> implements StateSubscriptio
19
24
  destroy(): void;
20
25
  protected abstract getStateValue(): S;
21
26
  protected abstract setStateValue(nextState: S): void;
22
- protected bindSubscribable<T>(service: {
23
- subscribe: (listener: (value: T) => void) => () => void;
24
- getSnapshot?: () => T;
25
- }, onChange: (value: T) => void): void;
27
+ protected bindSubscribable<T, Sel = T>(service: Subscribable<T>, onChange: (value: Sel) => void, selector: Selector<T, Sel>, isEqual?: EqualityFn<Sel>): void;
26
28
  abstract subscribe(listener: () => void): () => void;
29
+ abstract subscribe(listener: (value: S) => void): () => void;
27
30
  abstract getActions(): A;
28
31
  private handleDevToolsEvents;
29
32
  }
@@ -1,4 +1,5 @@
1
1
  import { withDevTools } from './dev-tools.js';
2
+ import { createSelectorCache, selectWithCache } from '../utils/selector-cache.js';
2
3
  const defaultDevToolsOptions = { enabled: false, namespace: 'Store' };
3
4
  const devToolsFeatures = {
4
5
  pause: true,
@@ -53,11 +54,19 @@ export class BaseStateHandler {
53
54
  destroy() {
54
55
  this.subscriptions.forEach((subscription) => subscription.unsubscribe());
55
56
  }
56
- bindSubscribable(service, onChange) {
57
- const unsubscribe = service.subscribe(onChange);
57
+ bindSubscribable(service, onChange, selector, isEqual = Object.is) {
58
+ const selectorCache = createSelectorCache();
59
+ const notifySelectedValue = (value) => {
60
+ const { value: nextSelection, hasChanged } = selectWithCache(selectorCache, value, selector, isEqual);
61
+ if (!hasChanged) {
62
+ return;
63
+ }
64
+ onChange(nextSelection);
65
+ };
66
+ const unsubscribe = service.subscribe(notifySelectedValue);
58
67
  this.subscriptions = [...(this.subscriptions ?? []), { unsubscribe }];
59
68
  if (service.getSnapshot)
60
- onChange(service.getSnapshot());
69
+ notifySelectedValue(service.getSnapshot());
61
70
  }
62
71
  handleDevToolsEvents = (message) => {
63
72
  if (message.type !== 'DISPATCH') {
@@ -1 +1 @@
1
- {"version":3,"file":"base-state-handler.js","sourceRoot":"","sources":["../../src/store/base-state-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAU9C,MAAM,sBAAsB,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAEtE,MAAM,gBAAgB,GAAG;IACvB,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE,KAAK;CACZ,CAAC;AAEF,MAAM,OAAgB,gBAAgB;IACjB,YAAY,CAAI;IACzB,QAAQ,GAAoB,IAAI,CAAC;IAE3C,aAAa,GAAuC,EAAE,CAAC;IAEvD,YAAsB,YAAe;QACnC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAES,YAAY,CAAC,eAAiC;QACtD,MAAM,aAAa,GAAG;YACpB,GAAG,sBAAsB;YACzB,GAAG,eAAe;SACnB,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE;YAC9C,IAAI,EAAE,aAAa,CAAC,SAAS;YAC7B,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;YACtE,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE;YACjC,QAAQ,EAAE,gBAAgB;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACtD,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,QAAQ,CAAC,QAAoB,EAAE,UAAU,GAAG,QAAQ;QAClD,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC;QACtD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO;QACL,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3E,CAAC;IAIS,gBAAgB,CACxB,OAA2F,EAC3F,QAA4B;QAE5B,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAEtE,IAAI,OAAO,CAAC,WAAW;YAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3D,CAAC;IAKO,oBAAoB,GAAG,CAAC,OAAuB,EAAE,EAAE;QACzD,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,QAAQ,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC7B,KAAK,OAAO;gBACV,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;gBAC3C,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;gBAC5C,MAAM;YAER,KAAK,QAAQ;gBACX,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACpC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACrC,MAAM;YAER,KAAK,eAAe,CAAC;YACrB,KAAK,gBAAgB;gBACnB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9C,MAAM;YAER;gBACE,MAAM;QACV,CAAC;IACH,CAAC,CAAC;CACH"}
1
+ {"version":3,"file":"base-state-handler.js","sourceRoot":"","sources":["../../src/store/base-state-handler.ts"],"names":[],"mappings":"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"}
@@ -27,5 +27,6 @@ export declare abstract class ObservableStateHandler<S, A> extends BaseStateHand
27
27
  /** @deprecated Use getObservable instead. */
28
28
  getObservableItem(key: keyof S): Observable<S[keyof S]>;
29
29
  subscribe(listener: () => void): () => void;
30
+ subscribe(listener: (value: S) => void): () => void;
30
31
  }
31
32
  export {};
@@ -37,12 +37,12 @@ export class ObservableStateHandler extends BaseStateHandler {
37
37
  }
38
38
  subscribe(listener) {
39
39
  let initialized = false;
40
- const subscription = this.getStateAsObservable().subscribe(() => {
40
+ const subscription = this.getStateAsObservable().subscribe((nextState) => {
41
41
  if (!initialized) {
42
42
  initialized = true;
43
43
  return;
44
44
  }
45
- listener();
45
+ listener(nextState);
46
46
  });
47
47
  return () => subscription.unsubscribe();
48
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"observable-state-handler.js","sourceRoot":"","sources":["../../src/store/observable-state-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAE3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAmBxE,MAAM,OAAgB,sBAA6B,SAAQ,gBAAsB;IAC9D,MAAM,CAAqB;IAC3B,eAAe,CAA+C;IAE/E,YAAsB,EAAE,YAAY,EAAE,OAAO,EAAkC;QAC7E,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAI,YAAY,CAAC,CAAC;QACnD,IAAI,CAAC,eAAe,GAAG,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC;QACnG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAES,aAAa;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAES,aAAa,CAAC,SAAY;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,wBAAwB,CAAC,GAAY;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,uBAAuB,CAAC,GAAG,CAAC,EAC5B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAC3B,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,UAAkC,EAAE;QACvD,MAAM,uBAAuB,GAC3B,OAAO,CAAC,uBAAuB,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;QAElE,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,oBAAoB,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE;YACtC,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC,CAAC,CACc,CAAC;IACrB,CAAC;IAED,aAAa,CAAC,GAAY;QACxB,OAAO,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,6CAA6C;IAC7C,iBAAiB,CAAC,GAAY;QAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,SAAS,CAAC,QAAoB;QAC5B,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE;YAC9D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,WAAW,GAAG,IAAI,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,QAAQ,EAAE,CAAC;QACb,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;IAC1C,CAAC;CACF"}
1
+ {"version":3,"file":"observable-state-handler.js","sourceRoot":"","sources":["../../src/store/observable-state-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAE3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAmBxE,MAAM,OAAgB,sBAA6B,SAAQ,gBAAsB;IAC9D,MAAM,CAAqB;IAC3B,eAAe,CAA+C;IAE/E,YAAsB,EAAE,YAAY,EAAE,OAAO,EAAkC;QAC7E,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAI,YAAY,CAAC,CAAC;QACnD,IAAI,CAAC,eAAe,GAAG,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC;QACnG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAES,aAAa;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAES,aAAa,CAAC,SAAY;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,wBAAwB,CAAC,GAAY;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,uBAAuB,CAAC,GAAG,CAAC,EAC5B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAC3B,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,UAAkC,EAAE;QACvD,MAAM,uBAAuB,GAC3B,OAAO,CAAC,uBAAuB,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;QAElE,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,oBAAoB,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE;YACtC,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC,CAAC,CACc,CAAC;IACrB,CAAC;IAED,aAAa,CAAC,GAAY;QACxB,OAAO,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,6CAA6C;IAC7C,iBAAiB,CAAC,GAAY;QAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAID,SAAS,CAAC,QAA4B;QACpC,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE;YACvE,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,WAAW,GAAG,IAAI,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;IAC1C,CAAC;CACF"}
@@ -12,13 +12,13 @@ type SignalStateHandlerProps<S> = {
12
12
  useDistinctUntilChanged?: boolean;
13
13
  };
14
14
  };
15
- type Listener = () => void;
16
15
  export declare abstract class SignalStateHandler<S, A> extends BaseStateHandler<S, A> {
17
16
  private readonly state;
18
17
  private readonly distinctOptions;
19
18
  protected constructor({ initialState, options }: SignalStateHandlerProps<S>);
20
19
  getSignal(): Signal<S>;
21
- subscribe(listener: Listener): () => void;
20
+ subscribe(listener: () => void): () => void;
21
+ subscribe(listener: (value: S) => void): () => void;
22
22
  protected getStateValue(): S;
23
23
  protected setStateValue(nextState: S): void;
24
24
  }
@@ -27,7 +27,7 @@ export class SignalStateHandler extends BaseStateHandler {
27
27
  return;
28
28
  }
29
29
  previousSnapshot = nextState;
30
- listener();
30
+ listener(nextState);
31
31
  });
32
32
  }
33
33
  getStateValue() {
@@ -1 +1 @@
1
- {"version":3,"file":"signal-state-handler.js","sourceRoot":"","sources":["../../src/store/signal-state-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAmBxE,MAAM,OAAgB,kBAAyB,SAAQ,gBAAsB;IAC1D,KAAK,CAAY;IACjB,eAAe,CAA+C;IAE/E,YAAsB,EAAE,YAAY,EAAE,OAAO,EAA8B;QACzE,KAAK,CAAC,YAAY,CAAC,CAAC;QAEpB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAI,YAAY,CAAC,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC;QACnG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,SAAS,CAAC,QAAkB;QAC1B,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAExC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE;YACxC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,WAAW,GAAG,IAAI,CAAC;gBACnB,gBAAgB,GAAG,SAAS,CAAC;gBAC7B,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,gBAAgB,EAAE,SAAS,CAAC,EAAE,CAAC;gBACjG,gBAAgB,GAAG,SAAS,CAAC;gBAC7B,OAAO;YACT,CAAC;YAED,gBAAgB,GAAG,SAAS,CAAC;YAC7B,QAAQ,EAAE,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAES,aAAa;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAES,aAAa,CAAC,SAAY;QAClC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;IAC/B,CAAC;CACF"}
1
+ {"version":3,"file":"signal-state-handler.js","sourceRoot":"","sources":["../../src/store/signal-state-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAiBxE,MAAM,OAAgB,kBAAyB,SAAQ,gBAAsB;IAC1D,KAAK,CAAY;IACjB,eAAe,CAA+C;IAE/E,YAAsB,EAAE,YAAY,EAAE,OAAO,EAA8B;QACzE,KAAK,CAAC,YAAY,CAAC,CAAC;QAEpB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAI,YAAY,CAAC,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC;QACnG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAID,SAAS,CAAC,QAA4B;QACpC,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAExC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE;YACxC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,WAAW,GAAG,IAAI,CAAC;gBACnB,gBAAgB,GAAG,SAAS,CAAC;gBAC7B,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,gBAAgB,EAAE,SAAS,CAAC,EAAE,CAAC;gBACjG,gBAAgB,GAAG,SAAS,CAAC;gBAC7B,OAAO;YACT,CAAC;YAED,gBAAgB,GAAG,SAAS,CAAC;YAC7B,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAES,aAAa;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAES,aAAa,CAAC,SAAY;QAClC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;IAC/B,CAAC;CACF"}
@@ -1,5 +1,6 @@
1
1
  export interface StateSubscriptionHandler<V, A> {
2
- subscribe: (listener: () => void) => () => void;
2
+ subscribe(listener: () => void): () => void;
3
+ subscribe(listener: (value: V) => void): () => void;
3
4
  getSnapshot: () => V;
4
5
  destroy: () => void;
5
6
  getInitialState: () => V;
@@ -0,0 +1,13 @@
1
+ export type Selector<Value, Selected> = (value: Value) => Selected;
2
+ export type EqualityFn<Selected> = (current: Selected, next: Selected) => boolean;
3
+ type SelectorCache<Selected> = {
4
+ hasValue: boolean;
5
+ value: Selected | undefined;
6
+ };
7
+ type SelectionResult<Selected> = {
8
+ value: Selected;
9
+ hasChanged: boolean;
10
+ };
11
+ export declare function createSelectorCache<Selected>(): SelectorCache<Selected>;
12
+ export declare function selectWithCache<Value, Selected>(selectorCache: SelectorCache<Selected>, value: Value, selector: Selector<Value, Selected>, isEqual?: EqualityFn<Selected>): SelectionResult<Selected>;
13
+ export {};
@@ -0,0 +1,22 @@
1
+ export function createSelectorCache() {
2
+ return {
3
+ hasValue: false,
4
+ value: undefined,
5
+ };
6
+ }
7
+ export function selectWithCache(selectorCache, value, selector, isEqual = Object.is) {
8
+ const nextSelection = selector(value);
9
+ if (selectorCache.hasValue && isEqual(selectorCache.value, nextSelection)) {
10
+ return {
11
+ value: selectorCache.value,
12
+ hasChanged: false,
13
+ };
14
+ }
15
+ selectorCache.hasValue = true;
16
+ selectorCache.value = nextSelection;
17
+ return {
18
+ value: nextSelection,
19
+ hasChanged: true,
20
+ };
21
+ }
22
+ //# sourceMappingURL=selector-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selector-cache.js","sourceRoot":"","sources":["../../src/utils/selector-cache.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,SAAS;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,aAAsC,EACtC,KAAY,EACZ,QAAmC,EACnC,UAAgC,MAAM,CAAC,EAAE;IAEzC,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEtC,IAAI,aAAa,CAAC,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC,KAAiB,EAAE,aAAa,CAAC,EAAE,CAAC;QACtF,OAAO;YACL,KAAK,EAAE,aAAa,CAAC,KAAiB;YACtC,UAAU,EAAE,KAAK;SAClB,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC;IAEpC,OAAO;QACL,KAAK,EAAE,aAAa;QACpB,UAAU,EAAE,IAAI;KACjB,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veams/status-quo",
3
- "version": "1.3.2",
3
+ "version": "1.4.0",
4
4
  "description": "The manager to rule states in frontend.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -328,7 +328,8 @@ class AppSignalStore extends SignalStateHandler<AppState, AppActions> {
328
328
 
329
329
  this.bindSubscribable(
330
330
  { subscribe: this.combined.subscribe.bind(this.combined), getSnapshot: () => this.combined.value },
331
- (nextState) => this.setState(nextState, "sync-combined")
331
+ (nextState) => this.setState(nextState, "sync-combined"),
332
+ (value) => value
332
333
  );
333
334
  }
334
335
  }`;
@@ -50,7 +50,7 @@ type CounterMirrorActions = {
50
50
  class TestStateHandler implements StateSubscriptionHandler<TestState, TestActions> {
51
51
  private readonly initialState: TestState;
52
52
  private state: TestState;
53
- private readonly listeners = new Set<() => void>();
53
+ private readonly listeners = new Set<(value: TestState) => void>();
54
54
 
55
55
  destroy = jest.fn();
56
56
 
@@ -59,13 +59,16 @@ class TestStateHandler implements StateSubscriptionHandler<TestState, TestAction
59
59
  this.state = initialState;
60
60
  }
61
61
 
62
- subscribe = (listener: () => void) => {
63
- this.listeners.add(listener);
62
+ subscribe(listener: () => void): () => void;
63
+ subscribe(listener: (value: TestState) => void): () => void;
64
+ subscribe(listener: ((value: TestState) => void) | (() => void)) {
65
+ const typedListener = listener as (value: TestState) => void;
66
+ this.listeners.add(typedListener);
64
67
 
65
68
  return () => {
66
- this.listeners.delete(listener);
69
+ this.listeners.delete(typedListener);
67
70
  };
68
- };
71
+ }
69
72
 
70
73
  getSnapshot = () => {
71
74
  return this.state;
@@ -100,14 +103,15 @@ class TestStateHandler implements StateSubscriptionHandler<TestState, TestAction
100
103
  };
101
104
 
102
105
  private emitStateChange() {
103
- this.listeners.forEach((listener) => listener());
106
+ const nextState = this.state;
107
+ this.listeners.forEach((listener) => listener(nextState));
104
108
  }
105
109
  }
106
110
 
107
111
  class CounterStateHandler implements StateSubscriptionHandler<CounterState, CounterActions> {
108
112
  private readonly initialState: CounterState;
109
113
  private state: CounterState;
110
- private readonly listeners = new Set<() => void>();
114
+ private readonly listeners = new Set<(value: CounterState) => void>();
111
115
 
112
116
  destroy = jest.fn();
113
117
 
@@ -116,13 +120,16 @@ class CounterStateHandler implements StateSubscriptionHandler<CounterState, Coun
116
120
  this.state = this.initialState;
117
121
  }
118
122
 
119
- subscribe = (listener: () => void) => {
120
- this.listeners.add(listener);
123
+ subscribe(listener: () => void): () => void;
124
+ subscribe(listener: (value: CounterState) => void): () => void;
125
+ subscribe(listener: ((value: CounterState) => void) | (() => void)) {
126
+ const typedListener = listener as (value: CounterState) => void;
127
+ this.listeners.add(typedListener);
121
128
 
122
129
  return () => {
123
- this.listeners.delete(listener);
130
+ this.listeners.delete(typedListener);
124
131
  };
125
- };
132
+ }
126
133
 
127
134
  getSnapshot = () => {
128
135
  return this.state;
@@ -139,7 +146,8 @@ class CounterStateHandler implements StateSubscriptionHandler<CounterState, Coun
139
146
  count: this.state.count + 1,
140
147
  };
141
148
 
142
- this.listeners.forEach((listener) => listener());
149
+ const nextState = this.state;
150
+ this.listeners.forEach((listener) => listener(nextState));
143
151
  },
144
152
  };
145
153
  };
@@ -150,7 +158,7 @@ class CounterMirrorStateHandler
150
158
  {
151
159
  private readonly initialState: CounterMirrorState;
152
160
  private state: CounterMirrorState;
153
- private readonly listeners = new Set<() => void>();
161
+ private readonly listeners = new Set<(value: CounterMirrorState) => void>();
154
162
  private readonly unsubscribeFromCounter: () => void;
155
163
 
156
164
  destroy = jest.fn(() => {
@@ -165,22 +173,25 @@ class CounterMirrorStateHandler
165
173
  mirroredCount: initialCounterState.count,
166
174
  };
167
175
  this.state = this.initialState;
168
- this.unsubscribeFromCounter = counterStateHandler.subscribe(() => {
169
- const nextCounterState = counterStateHandler.getSnapshot();
176
+ this.unsubscribeFromCounter = counterStateHandler.subscribe((nextCounterState: CounterState) => {
170
177
  this.state = {
171
178
  mirroredCount: nextCounterState.count,
172
179
  };
173
- this.listeners.forEach((listener) => listener());
180
+ const nextMirrorState = this.state;
181
+ this.listeners.forEach((listener) => listener(nextMirrorState));
174
182
  });
175
183
  }
176
184
 
177
- subscribe = (listener: () => void) => {
178
- this.listeners.add(listener);
185
+ subscribe(listener: () => void): () => void;
186
+ subscribe(listener: (value: CounterMirrorState) => void): () => void;
187
+ subscribe(listener: ((value: CounterMirrorState) => void) | (() => void)) {
188
+ const typedListener = listener as (value: CounterMirrorState) => void;
189
+ this.listeners.add(typedListener);
179
190
 
180
191
  return () => {
181
- this.listeners.delete(listener);
192
+ this.listeners.delete(typedListener);
182
193
  };
183
- };
194
+ }
184
195
 
185
196
  getSnapshot = () => {
186
197
  return this.state;
@@ -31,7 +31,7 @@ const createStateHandler = (value: number): TestHandler => {
31
31
  const actions = { noop: jest.fn() };
32
32
 
33
33
  return {
34
- subscribe: () => () => undefined,
34
+ subscribe: (_listener: (() => void) | ((value: TestState) => void)) => () => undefined,
35
35
  getSnapshot: () => snapshot,
36
36
  getInitialState: () => snapshot,
37
37
  getActions: () => actions,
@@ -1,14 +1,9 @@
1
1
  import { useCallback, useMemo, useSyncExternalStore } from 'react';
2
+ import { createSelectorCache, selectWithCache } from '../utils/selector-cache.js';
2
3
 
3
4
  import type { StateSubscriptionHandler } from '../types/types.js';
5
+ import type { EqualityFn, Selector } from '../utils/selector-cache.js';
4
6
 
5
- type SelectorCache<SelectedState> = {
6
- hasValue: boolean;
7
- value: SelectedState | undefined;
8
- };
9
-
10
- type SelectorFn<State, SelectedState> = (state: State) => SelectedState;
11
- type EqualityFn<SelectedState> = (current: SelectedState, next: SelectedState) => boolean;
12
7
  type Listener = () => void;
13
8
  type SharedStateSubscriptionHandler = StateSubscriptionHandler<unknown, unknown>;
14
9
  type DeferredDestroy = {
@@ -39,17 +34,11 @@ function getDeferredDestroyState(
39
34
 
40
35
  export function useStateSubscriptionSelector<V, A, Sel>(
41
36
  stateSubscriptionHandler: StateSubscriptionHandler<V, A>,
42
- selector: SelectorFn<V, Sel>,
37
+ selector: Selector<V, Sel>,
43
38
  isEqual: EqualityFn<Sel> = Object.is,
44
39
  destroyOnCleanup = true
45
40
  ) {
46
- const selectorCache = useMemo<SelectorCache<Sel>>(
47
- () => ({
48
- hasValue: false,
49
- value: undefined,
50
- }),
51
- [stateSubscriptionHandler]
52
- );
41
+ const selectorCache = useMemo(() => createSelectorCache<Sel>(), [stateSubscriptionHandler]);
53
42
 
54
43
  const subscribe = useCallback(
55
44
  (listener: Listener) => {
@@ -103,16 +92,7 @@ export function useStateSubscriptionSelector<V, A, Sel>(
103
92
 
104
93
  const selectSnapshot = useCallback(
105
94
  (snapshot: V) => {
106
- const nextSelection = selector(snapshot);
107
-
108
- if (selectorCache.hasValue && isEqual(selectorCache.value as Sel, nextSelection)) {
109
- return selectorCache.value as Sel;
110
- }
111
-
112
- selectorCache.hasValue = true;
113
- selectorCache.value = nextSelection;
114
-
115
- return nextSelection;
95
+ return selectWithCache(selectorCache, snapshot, selector, isEqual).value;
116
96
  },
117
97
  [isEqual, selector, selectorCache]
118
98
  );
@@ -46,6 +46,8 @@ class TestSignalStateHandler extends SignalStateHandler<TestState, TestActions>
46
46
 
47
47
  type CounterState = { count: number };
48
48
  type CounterActions = { increase: () => void };
49
+ type CounterBucketSelection = { bucket: number };
50
+ type CounterBucketState = { bucket: number };
49
51
 
50
52
  class CounterSignalStateHandler extends SignalStateHandler<CounterState, CounterActions> {
51
53
  constructor(initialCount = 0) {
@@ -78,16 +80,49 @@ class CounterSignalBridgeStateHandler extends SignalStateHandler<CounterState, {
78
80
 
79
81
  const counterStateHandler = counterSingleton.getInstance();
80
82
 
81
- this.bindSubscribable<CounterState>(
82
- {
83
- subscribe: (listener) =>
84
- counterStateHandler.subscribe(() => listener(counterStateHandler.getSnapshot())),
85
- getSnapshot: () => counterStateHandler.getSnapshot(),
86
- },
83
+ this.bindSubscribable<CounterState, CounterState>(
84
+ counterStateHandler,
87
85
  (nextCounterState) => {
88
86
  onCounterSync(nextCounterState);
89
87
  this.setState({ count: nextCounterState.count }, 'sync-counter');
90
- }
88
+ },
89
+ (counterState) => counterState
90
+ );
91
+ }
92
+
93
+ getActions(): { noop: () => void } {
94
+ return {
95
+ noop: () => undefined,
96
+ };
97
+ }
98
+ }
99
+
100
+ class CounterSignalBucketBridgeStateHandler extends SignalStateHandler<
101
+ CounterBucketState,
102
+ { noop: () => void }
103
+ > {
104
+ constructor(
105
+ counterSingleton: ReturnType<typeof makeStateSingleton<CounterState, CounterActions>>,
106
+ onCounterSync: (selection: CounterBucketSelection) => void
107
+ ) {
108
+ super({
109
+ initialState: {
110
+ bucket: -1,
111
+ },
112
+ });
113
+
114
+ const counterStateHandler = counterSingleton.getInstance();
115
+
116
+ this.bindSubscribable<CounterState, CounterBucketSelection>(
117
+ counterStateHandler,
118
+ (nextSelection) => {
119
+ onCounterSync(nextSelection);
120
+ this.setState({ bucket: nextSelection.bucket }, 'sync-counter-bucket');
121
+ },
122
+ (counterState) => ({
123
+ bucket: Math.floor(counterState.count / 2),
124
+ }),
125
+ (current, next) => current.bucket === next.bucket
91
126
  );
92
127
  }
93
128
 
@@ -250,4 +285,26 @@ describe('Signal State Handler', () => {
250
285
 
251
286
  bridgeStateHandler.destroy();
252
287
  });
288
+
289
+ it('should support selector + equality filtering for bindSubscribable', () => {
290
+ const counterSingleton = makeStateSingleton(() => new CounterSignalStateHandler(0), {
291
+ destroyOnNoConsumers: false,
292
+ });
293
+ const syncSpy = jest.fn();
294
+ const bridgeStateHandler = new CounterSignalBucketBridgeStateHandler(counterSingleton, syncSpy);
295
+ const counterStateHandler = counterSingleton.getInstance();
296
+
297
+ counterStateHandler.getActions().increase(); // count 1 -> bucket 0 (no change)
298
+ counterStateHandler.getActions().increase(); // count 2 -> bucket 1
299
+ counterStateHandler.getActions().increase(); // count 3 -> bucket 1 (no change)
300
+ counterStateHandler.getActions().increase(); // count 4 -> bucket 2
301
+
302
+ expect(syncSpy).toHaveBeenCalledTimes(3);
303
+ expect(syncSpy).toHaveBeenNthCalledWith(1, { bucket: 0 });
304
+ expect(syncSpy).toHaveBeenNthCalledWith(2, { bucket: 1 });
305
+ expect(syncSpy).toHaveBeenNthCalledWith(3, { bucket: 2 });
306
+ expect(bridgeStateHandler.getState()).toStrictEqual({ bucket: 2 });
307
+
308
+ bridgeStateHandler.destroy();
309
+ });
253
310
  });
@@ -1,13 +1,20 @@
1
1
  import { withDevTools } from './dev-tools.js';
2
+ import { createSelectorCache, selectWithCache } from '../utils/selector-cache.js';
2
3
 
3
4
  import type { StateSubscriptionHandler } from '../types/types.js';
4
5
  import type { DevTools, MessagePayload } from './dev-tools.js';
6
+ import type { EqualityFn, Selector } from '../utils/selector-cache.js';
5
7
 
6
8
  type DevToolsOptions = {
7
9
  enabled?: boolean;
8
10
  namespace: string;
9
11
  };
10
12
 
13
+ type Subscribable<T> = {
14
+ subscribe: (listener: (value: T) => void) => () => void;
15
+ getSnapshot?: () => T;
16
+ };
17
+
11
18
  const defaultDevToolsOptions = { enabled: false, namespace: 'Store' };
12
19
 
13
20
  const devToolsFeatures = {
@@ -78,17 +85,44 @@ export abstract class BaseStateHandler<S, A> implements StateSubscriptionHandler
78
85
 
79
86
  protected abstract getStateValue(): S;
80
87
  protected abstract setStateValue(nextState: S): void;
81
- protected bindSubscribable<T>(
82
- service: { subscribe: (listener: (value: T) => void) => () => void; getSnapshot?: () => T },
83
- onChange: (value: T) => void
88
+
89
+ protected bindSubscribable<T, Sel = T>(
90
+ service: Subscribable<T>,
91
+ onChange: (value: Sel) => void,
92
+ selector: Selector<T, Sel>,
93
+ isEqual?: EqualityFn<Sel>
94
+ ): void;
95
+ protected bindSubscribable<T, Sel = T>(
96
+ service: Subscribable<T>,
97
+ onChange: (value: Sel) => void,
98
+ selector: Selector<T, Sel>,
99
+ isEqual: EqualityFn<Sel> = Object.is
84
100
  ) {
85
- const unsubscribe = service.subscribe(onChange);
101
+ const selectorCache = createSelectorCache<Sel>();
102
+
103
+ const notifySelectedValue = (value: T) => {
104
+ const { value: nextSelection, hasChanged } = selectWithCache(
105
+ selectorCache,
106
+ value,
107
+ selector,
108
+ isEqual
109
+ );
110
+
111
+ if (!hasChanged) {
112
+ return;
113
+ }
114
+
115
+ onChange(nextSelection);
116
+ };
117
+
118
+ const unsubscribe = service.subscribe(notifySelectedValue);
86
119
  this.subscriptions = [...(this.subscriptions ?? []), { unsubscribe }];
87
120
 
88
- if (service.getSnapshot) onChange(service.getSnapshot());
121
+ if (service.getSnapshot) notifySelectedValue(service.getSnapshot());
89
122
  }
90
123
 
91
124
  abstract subscribe(listener: () => void): () => void;
125
+ abstract subscribe(listener: (value: S) => void): () => void;
92
126
  abstract getActions(): A;
93
127
 
94
128
  private handleDevToolsEvents = (message: MessagePayload) => {
@@ -70,15 +70,17 @@ export abstract class ObservableStateHandler<S, A> extends BaseStateHandler<S, A
70
70
  return this.getObservable(key);
71
71
  }
72
72
 
73
- subscribe(listener: () => void) {
73
+ subscribe(listener: () => void): () => void;
74
+ subscribe(listener: (value: S) => void): () => void;
75
+ subscribe(listener: (value: S) => void) {
74
76
  let initialized = false;
75
- const subscription = this.getStateAsObservable().subscribe(() => {
77
+ const subscription = this.getStateAsObservable().subscribe((nextState) => {
76
78
  if (!initialized) {
77
79
  initialized = true;
78
80
  return;
79
81
  }
80
82
 
81
- listener();
83
+ listener(nextState);
82
84
  });
83
85
  return () => subscription.unsubscribe();
84
86
  }
@@ -18,8 +18,6 @@ type SignalStateHandlerProps<S> = {
18
18
  };
19
19
  };
20
20
 
21
- type Listener = () => void;
22
-
23
21
  export abstract class SignalStateHandler<S, A> extends BaseStateHandler<S, A> {
24
22
  private readonly state: Signal<S>;
25
23
  private readonly distinctOptions: ReturnType<typeof resolveDistinctOptions<S>>;
@@ -36,7 +34,9 @@ export abstract class SignalStateHandler<S, A> extends BaseStateHandler<S, A> {
36
34
  return this.state;
37
35
  }
38
36
 
39
- subscribe(listener: Listener) {
37
+ subscribe(listener: () => void): () => void;
38
+ subscribe(listener: (value: S) => void): () => void;
39
+ subscribe(listener: (value: S) => void) {
40
40
  let initialized = false;
41
41
  let previousSnapshot = this.state.value;
42
42
 
@@ -53,7 +53,7 @@ export abstract class SignalStateHandler<S, A> extends BaseStateHandler<S, A> {
53
53
  }
54
54
 
55
55
  previousSnapshot = nextState;
56
- listener();
56
+ listener(nextState);
57
57
  });
58
58
  }
59
59
 
@@ -1,5 +1,6 @@
1
1
  export interface StateSubscriptionHandler<V, A> {
2
- subscribe: (listener: () => void) => () => void;
2
+ subscribe(listener: () => void): () => void;
3
+ subscribe(listener: (value: V) => void): () => void;
3
4
  getSnapshot: () => V;
4
5
  destroy: () => void;
5
6
  getInitialState: () => V;
@@ -0,0 +1,43 @@
1
+ export type Selector<Value, Selected> = (value: Value) => Selected;
2
+ export type EqualityFn<Selected> = (current: Selected, next: Selected) => boolean;
3
+
4
+ type SelectorCache<Selected> = {
5
+ hasValue: boolean;
6
+ value: Selected | undefined;
7
+ };
8
+
9
+ type SelectionResult<Selected> = {
10
+ value: Selected;
11
+ hasChanged: boolean;
12
+ };
13
+
14
+ export function createSelectorCache<Selected>(): SelectorCache<Selected> {
15
+ return {
16
+ hasValue: false,
17
+ value: undefined,
18
+ };
19
+ }
20
+
21
+ export function selectWithCache<Value, Selected>(
22
+ selectorCache: SelectorCache<Selected>,
23
+ value: Value,
24
+ selector: Selector<Value, Selected>,
25
+ isEqual: EqualityFn<Selected> = Object.is
26
+ ): SelectionResult<Selected> {
27
+ const nextSelection = selector(value);
28
+
29
+ if (selectorCache.hasValue && isEqual(selectorCache.value as Selected, nextSelection)) {
30
+ return {
31
+ value: selectorCache.value as Selected,
32
+ hasChanged: false,
33
+ };
34
+ }
35
+
36
+ selectorCache.hasValue = true;
37
+ selectorCache.value = nextSelection;
38
+
39
+ return {
40
+ value: nextSelection,
41
+ hasChanged: true,
42
+ };
43
+ }