@veams/status-quo 1.8.2 → 1.10.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.
- package/README.md +11 -1
- package/dist/store/__tests__/native-state-handler.spec.js +69 -0
- package/dist/store/__tests__/native-state-handler.spec.js.map +1 -1
- package/dist/store/__tests__/observable-state-handler.spec.js +6 -0
- package/dist/store/__tests__/observable-state-handler.spec.js.map +1 -1
- package/dist/store/__tests__/signal-state-handler.spec.js +69 -0
- package/dist/store/__tests__/signal-state-handler.spec.js.map +1 -1
- package/dist/store/base-state-handler.d.ts +7 -3
- package/dist/store/base-state-handler.js +28 -7
- package/dist/store/base-state-handler.js.map +1 -1
- package/package.json +1 -1
- package/src/store/__tests__/native-state-handler.spec.ts +92 -0
- package/src/store/__tests__/observable-state-handler.spec.ts +10 -0
- package/src/store/__tests__/signal-state-handler.spec.ts +92 -0
- package/src/store/base-state-handler.ts +60 -10
package/README.md
CHANGED
|
@@ -651,14 +651,24 @@ Public methods:
|
|
|
651
651
|
- `destroy(): void`
|
|
652
652
|
- `getActions(): A` (abstract)
|
|
653
653
|
|
|
654
|
+
Tracked subscription state:
|
|
655
|
+
|
|
656
|
+
- `subscriptions: Array<{ unsubscribe: () => void }>`
|
|
657
|
+
- `namedSubscriptions: Map<string, { unsubscribe: () => void }>`
|
|
658
|
+
- Use `this.namedSubscriptions` inside the handler when you need to inspect which named bindings are currently registered.
|
|
659
|
+
|
|
654
660
|
Protected helpers:
|
|
655
661
|
|
|
656
662
|
- `getStateValue(): S` (abstract)
|
|
657
663
|
- `setStateValue(next: S): void` (abstract)
|
|
658
664
|
- `initDevTools(options?: { enabled?: boolean; namespace?: string }): void`
|
|
665
|
+
- `bindSubscribable<T>(subscriptionName: string, service: { subscribe: (listener: (value: T) => void) => () => void; getSnapshot?: () => T }, onChange: (value: T) => void, selector?: (value: T) => T, isEqual?: (current: T, next: T) => boolean): void`
|
|
666
|
+
- `bindSubscribable<T, Sel>(subscriptionName: string, service: { subscribe: (listener: (value: T) => void) => () => void; getSnapshot?: () => T }, onChange: (value: Sel) => void, selector: (value: T) => Sel, isEqual?: (current: Sel, next: Sel) => boolean): void`
|
|
659
667
|
- `bindSubscribable<T>(service: { subscribe: (listener: (value: T) => void) => () => void; getSnapshot?: () => T }, onChange: (value: T) => void, selector?: (value: T) => T, isEqual?: (current: T, next: T) => boolean): void`
|
|
660
668
|
- `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`
|
|
661
|
-
-
|
|
669
|
+
- Named subscriptions are tracked on `this.namedSubscriptions`. Rebinding the same `subscriptionName` unsubscribes the previous binding before replacing it.
|
|
670
|
+
- Unnamed subscriptions are tracked on `this.subscriptions`.
|
|
671
|
+
- Both named and unnamed subscriptions invoke `onChange` with the current snapshot when available.
|
|
662
672
|
- If `selector` is omitted, identity selection is used.
|
|
663
673
|
- `onChange` is only called when selected value changes according to `isEqual` (default `Object.is`).
|
|
664
674
|
|
|
@@ -88,6 +88,28 @@ class CounterNativeBucketBridgeStateHandler extends NativeStateHandler {
|
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
|
+
class CounterNamedNativeBridgeStateHandler extends NativeStateHandler {
|
|
92
|
+
onCounterSync;
|
|
93
|
+
constructor(onCounterSync) {
|
|
94
|
+
super({
|
|
95
|
+
initialState: {
|
|
96
|
+
count: -1,
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
this.onCounterSync = onCounterSync;
|
|
100
|
+
}
|
|
101
|
+
bindNamedCounter(service, subscriptionName = 'namedSubscription') {
|
|
102
|
+
this.bindSubscribable(subscriptionName, service, (nextCounterState) => {
|
|
103
|
+
this.onCounterSync(nextCounterState);
|
|
104
|
+
this.setState({ count: nextCounterState.count }, 'sync-counter');
|
|
105
|
+
}, (counterState) => counterState);
|
|
106
|
+
}
|
|
107
|
+
getActions() {
|
|
108
|
+
return {
|
|
109
|
+
noop: () => undefined,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
}
|
|
91
113
|
class SetNativeStateHandler extends NativeStateHandler {
|
|
92
114
|
constructor() {
|
|
93
115
|
super({
|
|
@@ -111,6 +133,25 @@ class SetNativeStateHandler extends NativeStateHandler {
|
|
|
111
133
|
};
|
|
112
134
|
}
|
|
113
135
|
}
|
|
136
|
+
function createCounterSubscribable(initialCount) {
|
|
137
|
+
let listener = null;
|
|
138
|
+
const unsubscribe = jest.fn(() => {
|
|
139
|
+
listener = null;
|
|
140
|
+
});
|
|
141
|
+
return {
|
|
142
|
+
emit(value) {
|
|
143
|
+
listener?.(value);
|
|
144
|
+
},
|
|
145
|
+
service: {
|
|
146
|
+
getSnapshot: () => ({ count: initialCount }),
|
|
147
|
+
subscribe: (nextListener) => {
|
|
148
|
+
listener = nextListener;
|
|
149
|
+
return unsubscribe;
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
unsubscribe,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
114
155
|
describe('Native State Handler', () => {
|
|
115
156
|
let stateHandler;
|
|
116
157
|
beforeEach(() => {
|
|
@@ -238,5 +279,33 @@ describe('Native State Handler', () => {
|
|
|
238
279
|
expect(bridgeStateHandler.getState()).toStrictEqual({ bucket: 2 });
|
|
239
280
|
bridgeStateHandler.destroy();
|
|
240
281
|
});
|
|
282
|
+
it('should replace named bindSubscribable subscriptions when bound again with the same key', () => {
|
|
283
|
+
const syncSpy = jest.fn();
|
|
284
|
+
const bridgeStateHandler = new CounterNamedNativeBridgeStateHandler(syncSpy);
|
|
285
|
+
const firstCounter = createCounterSubscribable(1);
|
|
286
|
+
const secondCounter = createCounterSubscribable(5);
|
|
287
|
+
bridgeStateHandler.bindNamedCounter(firstCounter.service);
|
|
288
|
+
bridgeStateHandler.bindNamedCounter(secondCounter.service);
|
|
289
|
+
firstCounter.emit({ count: 2 });
|
|
290
|
+
secondCounter.emit({ count: 6 });
|
|
291
|
+
expect(firstCounter.unsubscribe).toHaveBeenCalledTimes(1);
|
|
292
|
+
expect(secondCounter.unsubscribe).toHaveBeenCalledTimes(0);
|
|
293
|
+
expect(syncSpy).toHaveBeenCalledTimes(3);
|
|
294
|
+
expect(syncSpy).toHaveBeenNthCalledWith(1, { count: 1 });
|
|
295
|
+
expect(syncSpy).toHaveBeenNthCalledWith(2, { count: 5 });
|
|
296
|
+
expect(syncSpy).toHaveBeenNthCalledWith(3, { count: 6 });
|
|
297
|
+
expect(bridgeStateHandler.getState()).toStrictEqual({ count: 6 });
|
|
298
|
+
bridgeStateHandler.destroy();
|
|
299
|
+
});
|
|
300
|
+
it('should unsubscribe named bindSubscribable subscriptions on destroy', () => {
|
|
301
|
+
const syncSpy = jest.fn();
|
|
302
|
+
const bridgeStateHandler = new CounterNamedNativeBridgeStateHandler(syncSpy);
|
|
303
|
+
const counter = createCounterSubscribable(3);
|
|
304
|
+
bridgeStateHandler.bindNamedCounter(counter.service);
|
|
305
|
+
bridgeStateHandler.destroy();
|
|
306
|
+
counter.emit({ count: 4 });
|
|
307
|
+
expect(counter.unsubscribe).toHaveBeenCalledTimes(1);
|
|
308
|
+
expect(syncSpy).toHaveBeenCalledTimes(1);
|
|
309
|
+
});
|
|
241
310
|
});
|
|
242
311
|
//# sourceMappingURL=native-state-handler.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-state-handler.spec.js","sourceRoot":"","sources":["../../../src/store/__tests__/native-state-handler.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"native-state-handler.spec.js","sourceRoot":"","sources":["../../../src/store/__tests__/native-state-handler.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -80,6 +80,12 @@ describe('Observable State Handler', () => {
|
|
|
80
80
|
customSubject.next(3);
|
|
81
81
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
82
82
|
});
|
|
83
|
+
it('should destroy named subscriptions as well', () => {
|
|
84
|
+
const spy = jest.fn();
|
|
85
|
+
stateHandler.namedSubscriptions.set('namedSubscription', { unsubscribe: spy });
|
|
86
|
+
stateHandler.destroy();
|
|
87
|
+
expect(spy).toHaveBeenCalledTimes(1);
|
|
88
|
+
});
|
|
83
89
|
it('should expose state item observable via getObservableItem', async () => {
|
|
84
90
|
const observableValue = await lastValueFrom(stateHandler.getObservableItem('test').pipe(take(1)));
|
|
85
91
|
expect(observableValue).toBe('testValue');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observable-state-handler.spec.js","sourceRoot":"","sources":["../../../src/store/__tests__/observable-state-handler.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEpD,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAoBxE,MAAM,0BAA2B,SAAQ,sBAA8C;IACrF,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,uBAAuB,MACS,EAAE;QAClC,KAAK,CAAC;YACJ,YAAY,EAAE;gBACZ,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,YAAY;aACpB;YACD,OAAO,EAAE;gBACP,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,CAAC;gBAC7B,GAAG,CAAC,QAAQ,IAAI;oBACd,QAAQ;iBACT,CAAC;gBACF,GAAG,CAAC,OAAO,uBAAuB,KAAK,SAAS,IAAI;oBAClD,uBAAuB;iBACxB,CAAC;aACH;SACF,CAAC,CAAC;IACL,CAAC;IAED,UAAU;QACR,OAAO;YACL,UAAU,EAAE,GAAG,EAAE;gBACf,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;YACtC,CAAC;SACF,CAAC;IACJ,CAAC;CACF;AAED,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,IAAI,YAAwC,CAAC;IAE7C,SAAS,qBAAqB;QAC5B,MAAM,QAAQ,GAAG;YACf,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;YACf,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;YACf,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;SACrB,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;QAExC,MAAM,CAAC,4BAA4B,GAAG,EAAE,OAAO,EAAE,CAAC;QAElD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAED,UAAU,CAAC,GAAG,EAAE;QACd,sBAAsB,EAAE,CAAC;QACzB,YAAY,GAAG,IAAI,0BAA0B,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,MAAM,CAAC,4BAA4B,CAAC;QAC3C,sBAAsB,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC,aAAa,CAAC;YACnD,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,YAAY;SACpB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,aAAa,CAAC;YAC5C,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,YAAY;SACpB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;QAC9F,MAAM,QAAQ,GAAG;YACf,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,YAAY;SACpB,CAAC;QAEF,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEhC,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9E,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,aAAa,GAAG,IAAI,OAAO,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACtB,MAAM,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAElD,YAAY,CAAC,aAAa,GAAG,CAAC,YAAY,CAAC,CAAC;QAE5C,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEtB,YAAY,CAAC,OAAO,EAAE,CAAC;QAEvB,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEtB,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAElG,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAEtB,MAAM,WAAW,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAChD,YAAY,CAAC,QAAQ,CAAC;YACpB,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QACH,YAAY,CAAC,QAAQ,CAAC;YACpB,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;QACH,YAAY,CAAC,QAAQ,CAAC;YACpB,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;QACH,YAAY,CAAC,QAAQ,CAAC;YACpB,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;QAEH,WAAW,EAAE,CAAC;QAEd,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,+DAA+D;IACvG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,cAAc,CAAC;YACb,QAAQ,EAAE;gBACR,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,0BAA0B,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACtB,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAE3C,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnC,WAAW,EAAE,CAAC;QAEd,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,cAAc,CAAC;YACb,QAAQ,EAAE;gBACR,UAAU,EAAE,CAAC,QAAmB,EAAE,IAAe,EAAE,EAAE;oBACnD,OAAO,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;gBACrC,CAAC;aACF;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,0BAA0B,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACtB,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAE3C,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAEvC,WAAW,EAAE,CAAC;QAEd,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,cAAc,CAAC;YACb,QAAQ,EAAE;gBACR,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,0BAA0B,CAAC;YAC7C,QAAQ,EAAE;gBACR,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACtB,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAE3C,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnC,WAAW,EAAE,CAAC;QAEd,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uFAAuF,EAAE,GAAG,EAAE;QAC/F,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,qBAAqB,EAAE,CAAC;QAEtD,cAAc,CAAC;YACb,QAAQ,EAAE;gBACR,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QAEH,IAAI,0BAA0B,EAAE,CAAC;QAEjC,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAClC,MAAM,CAAC,gBAAgB,CAAC;YACtB,UAAU,EAAE,4BAA4B;YACxC,IAAI,EAAE,4BAA4B;SACnC,CAAC,CACH,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC;YACzC,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,YAAY;SACpB,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,EAAE,OAAO,EAAE,GAAG,qBAAqB,EAAE,CAAC;QAE5C,cAAc,CAAC;YACb,QAAQ,EAAE;gBACR,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QAEH,IAAI,0BAA0B,CAAC;YAC7B,QAAQ,EAAE;gBACR,SAAS,EAAE,cAAc;aAC1B;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAClC,MAAM,CAAC,gBAAgB,CAAC;YACtB,UAAU,EAAE,cAAc;YAC1B,IAAI,EAAE,cAAc;SACrB,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,GAAG,EAAE;QACvF,MAAM,EAAE,OAAO,EAAE,GAAG,qBAAqB,EAAE,CAAC;QAE5C,cAAc,CAAC;YACb,QAAQ,EAAE;gBACR,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QAEH,IAAI,0BAA0B,CAAC;YAC7B,QAAQ,EAAE;gBACR,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"observable-state-handler.spec.js","sourceRoot":"","sources":["../../../src/store/__tests__/observable-state-handler.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -88,6 +88,47 @@ class CounterSignalBucketBridgeStateHandler extends SignalStateHandler {
|
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
|
+
class CounterNamedSignalBridgeStateHandler extends SignalStateHandler {
|
|
92
|
+
onCounterSync;
|
|
93
|
+
constructor(onCounterSync) {
|
|
94
|
+
super({
|
|
95
|
+
initialState: {
|
|
96
|
+
count: -1,
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
this.onCounterSync = onCounterSync;
|
|
100
|
+
}
|
|
101
|
+
bindNamedCounter(service, subscriptionName = 'namedSubscription') {
|
|
102
|
+
this.bindSubscribable(subscriptionName, service, (nextCounterState) => {
|
|
103
|
+
this.onCounterSync(nextCounterState);
|
|
104
|
+
this.setState({ count: nextCounterState.count }, 'sync-counter');
|
|
105
|
+
}, (counterState) => counterState);
|
|
106
|
+
}
|
|
107
|
+
getActions() {
|
|
108
|
+
return {
|
|
109
|
+
noop: () => undefined,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function createCounterSubscribable(initialCount) {
|
|
114
|
+
let listener = null;
|
|
115
|
+
const unsubscribe = jest.fn(() => {
|
|
116
|
+
listener = null;
|
|
117
|
+
});
|
|
118
|
+
return {
|
|
119
|
+
emit(value) {
|
|
120
|
+
listener?.(value);
|
|
121
|
+
},
|
|
122
|
+
service: {
|
|
123
|
+
getSnapshot: () => ({ count: initialCount }),
|
|
124
|
+
subscribe: (nextListener) => {
|
|
125
|
+
listener = nextListener;
|
|
126
|
+
return unsubscribe;
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
unsubscribe,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
91
132
|
describe('Signal State Handler', () => {
|
|
92
133
|
let stateHandler;
|
|
93
134
|
beforeEach(() => {
|
|
@@ -224,5 +265,33 @@ describe('Signal State Handler', () => {
|
|
|
224
265
|
expect(bridgeStateHandler.getState()).toStrictEqual({ bucket: 2 });
|
|
225
266
|
bridgeStateHandler.destroy();
|
|
226
267
|
});
|
|
268
|
+
it('should replace named bindSubscribable subscriptions when bound again with the same key', () => {
|
|
269
|
+
const syncSpy = jest.fn();
|
|
270
|
+
const bridgeStateHandler = new CounterNamedSignalBridgeStateHandler(syncSpy);
|
|
271
|
+
const firstCounter = createCounterSubscribable(1);
|
|
272
|
+
const secondCounter = createCounterSubscribable(5);
|
|
273
|
+
bridgeStateHandler.bindNamedCounter(firstCounter.service);
|
|
274
|
+
bridgeStateHandler.bindNamedCounter(secondCounter.service);
|
|
275
|
+
firstCounter.emit({ count: 2 });
|
|
276
|
+
secondCounter.emit({ count: 6 });
|
|
277
|
+
expect(firstCounter.unsubscribe).toHaveBeenCalledTimes(1);
|
|
278
|
+
expect(secondCounter.unsubscribe).toHaveBeenCalledTimes(0);
|
|
279
|
+
expect(syncSpy).toHaveBeenCalledTimes(3);
|
|
280
|
+
expect(syncSpy).toHaveBeenNthCalledWith(1, { count: 1 });
|
|
281
|
+
expect(syncSpy).toHaveBeenNthCalledWith(2, { count: 5 });
|
|
282
|
+
expect(syncSpy).toHaveBeenNthCalledWith(3, { count: 6 });
|
|
283
|
+
expect(bridgeStateHandler.getState()).toStrictEqual({ count: 6 });
|
|
284
|
+
bridgeStateHandler.destroy();
|
|
285
|
+
});
|
|
286
|
+
it('should unsubscribe named bindSubscribable subscriptions on destroy', () => {
|
|
287
|
+
const syncSpy = jest.fn();
|
|
288
|
+
const bridgeStateHandler = new CounterNamedSignalBridgeStateHandler(syncSpy);
|
|
289
|
+
const counter = createCounterSubscribable(3);
|
|
290
|
+
bridgeStateHandler.bindNamedCounter(counter.service);
|
|
291
|
+
bridgeStateHandler.destroy();
|
|
292
|
+
counter.emit({ count: 4 });
|
|
293
|
+
expect(counter.unsubscribe).toHaveBeenCalledTimes(1);
|
|
294
|
+
expect(syncSpy).toHaveBeenCalledTimes(1);
|
|
295
|
+
});
|
|
227
296
|
});
|
|
228
297
|
//# 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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"}
|
|
@@ -12,6 +12,9 @@ type Subscribable<T> = {
|
|
|
12
12
|
subscribe: (listener: (value: T) => void) => () => void;
|
|
13
13
|
getSnapshot?: () => T;
|
|
14
14
|
};
|
|
15
|
+
type ManagedSubscription = {
|
|
16
|
+
unsubscribe: () => void;
|
|
17
|
+
};
|
|
15
18
|
/**
|
|
16
19
|
* Abstract base class for all state handlers in the system.
|
|
17
20
|
* Implements core logic for initialization, DevTools integration, and subscriptions.
|
|
@@ -19,9 +22,8 @@ type Subscribable<T> = {
|
|
|
19
22
|
export declare abstract class BaseStateHandler<S, A> implements StateSubscriptionHandler<S, A> {
|
|
20
23
|
protected readonly initialState: S;
|
|
21
24
|
protected devTools: DevTools | null;
|
|
22
|
-
subscriptions:
|
|
23
|
-
|
|
24
|
-
}>;
|
|
25
|
+
subscriptions: ManagedSubscription[];
|
|
26
|
+
namedSubscriptions: Map<string, ManagedSubscription>;
|
|
25
27
|
/**
|
|
26
28
|
* Initializes the handler with the given initial state.
|
|
27
29
|
*/
|
|
@@ -61,6 +63,8 @@ export declare abstract class BaseStateHandler<S, A> implements StateSubscriptio
|
|
|
61
63
|
* Binds an external subscribable source to this handler's state.
|
|
62
64
|
* Useful for bridging different state systems.
|
|
63
65
|
*/
|
|
66
|
+
protected bindSubscribable<T, Sel>(subscriptionName: string, service: Subscribable<T>, onChange: (value: Sel) => void, selector: Selector<T, Sel>, isEqual?: EqualityFn<Sel>): void;
|
|
67
|
+
protected bindSubscribable<T>(subscriptionName: string, service: Subscribable<T>, onChange: (value: T) => void): void;
|
|
64
68
|
protected bindSubscribable<T, Sel>(service: Subscribable<T>, onChange: (value: Sel) => void, selector: Selector<T, Sel>, isEqual?: EqualityFn<Sel>): void;
|
|
65
69
|
protected bindSubscribable<T>(service: Subscribable<T>, onChange: (value: T) => void): void;
|
|
66
70
|
abstract subscribe(listener: () => void): () => void;
|
|
@@ -30,6 +30,8 @@ export class BaseStateHandler {
|
|
|
30
30
|
devTools = null;
|
|
31
31
|
// Keeps track of active subscriptions to allow for cleanup.
|
|
32
32
|
subscriptions = [];
|
|
33
|
+
// Tracks keyed subscriptions so handlers can replace them by name.
|
|
34
|
+
namedSubscriptions = new Map();
|
|
33
35
|
/**
|
|
34
36
|
* Initializes the handler with the given initial state.
|
|
35
37
|
*/
|
|
@@ -83,7 +85,7 @@ export class BaseStateHandler {
|
|
|
83
85
|
*/
|
|
84
86
|
setState(newState, actionName = 'change') {
|
|
85
87
|
// Merge current state with the new partial state.
|
|
86
|
-
const nextState = { ...this.getState(), ...newState };
|
|
88
|
+
const nextState = { ...structuredClone(this.getState()), ...structuredClone(newState) };
|
|
87
89
|
// Update the underlying state value (implemented by subclasses).
|
|
88
90
|
this.setStateValue(nextState);
|
|
89
91
|
// Notify DevTools of the state change.
|
|
@@ -93,8 +95,13 @@ export class BaseStateHandler {
|
|
|
93
95
|
* Cleans up all active subscriptions when the handler is destroyed.
|
|
94
96
|
*/
|
|
95
97
|
destroy() {
|
|
98
|
+
const subscriptions = [...this.subscriptions];
|
|
99
|
+
const namedSubscriptions = [...this.namedSubscriptions.values()];
|
|
100
|
+
this.subscriptions = [];
|
|
101
|
+
this.namedSubscriptions.clear();
|
|
96
102
|
// Execute the unsubscribe function for each tracked subscription.
|
|
97
|
-
|
|
103
|
+
subscriptions.forEach((subscription) => subscription.unsubscribe());
|
|
104
|
+
namedSubscriptions.forEach((subscription) => subscription.unsubscribe());
|
|
98
105
|
}
|
|
99
106
|
/**
|
|
100
107
|
* Returns a default namespace for DevTools based on the class name.
|
|
@@ -102,7 +109,13 @@ export class BaseStateHandler {
|
|
|
102
109
|
getDevToolsNamespace() {
|
|
103
110
|
return this.constructor.name || 'Store';
|
|
104
111
|
}
|
|
105
|
-
bindSubscribable(
|
|
112
|
+
bindSubscribable(subscriptionNameOrService, serviceOrOnChange, onChangeOrSelector, selectorOrIsEqual, isEqual = Object.is) {
|
|
113
|
+
const hasSubscriptionName = typeof subscriptionNameOrService === 'string';
|
|
114
|
+
const subscriptionName = hasSubscriptionName ? subscriptionNameOrService : null;
|
|
115
|
+
const service = (hasSubscriptionName ? serviceOrOnChange : subscriptionNameOrService);
|
|
116
|
+
const onChange = (hasSubscriptionName ? onChangeOrSelector : serviceOrOnChange);
|
|
117
|
+
const selector = (hasSubscriptionName ? selectorOrIsEqual : onChangeOrSelector);
|
|
118
|
+
const equalityFn = (hasSubscriptionName ? isEqual : (selectorOrIsEqual ?? Object.is));
|
|
106
119
|
// Default to identity selector if none is provided.
|
|
107
120
|
const selectorFn = (selector ?? ((value) => value));
|
|
108
121
|
// Create a cache for selector results to avoid unnecessary updates.
|
|
@@ -113,17 +126,25 @@ export class BaseStateHandler {
|
|
|
113
126
|
const notifySelectedValue = (value) => {
|
|
114
127
|
receivedSyncValue = true;
|
|
115
128
|
// Extract the selected value and check if it has actually changed.
|
|
116
|
-
const { value: nextSelection, hasChanged } = selectWithCache(selectorCache, value, selectorFn,
|
|
129
|
+
const { value: nextSelection, hasChanged } = selectWithCache(selectorCache, value, selectorFn, equalityFn);
|
|
117
130
|
// Only trigger the callback if the selected value changed.
|
|
118
131
|
if (!hasChanged) {
|
|
119
132
|
return;
|
|
120
133
|
}
|
|
121
134
|
onChange(nextSelection);
|
|
122
135
|
};
|
|
136
|
+
if (subscriptionName) {
|
|
137
|
+
this.namedSubscriptions.get(subscriptionName)?.unsubscribe();
|
|
138
|
+
}
|
|
123
139
|
// Subscribe to the external source.
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
140
|
+
const subscription = { unsubscribe: service.subscribe(notifySelectedValue) };
|
|
141
|
+
if (subscriptionName) {
|
|
142
|
+
this.namedSubscriptions.set(subscriptionName, subscription);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
// Track the subscription for later cleanup.
|
|
146
|
+
this.subscriptions = [...(this.subscriptions ?? []), subscription];
|
|
147
|
+
}
|
|
127
148
|
// If the source has a getSnapshot method and we haven't received a value yet, pull it manually.
|
|
128
149
|
if (service.getSnapshot && !receivedSyncValue)
|
|
129
150
|
notifySelectedValue(service.getSnapshot());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-state-handler.js","sourceRoot":"","sources":["../../src/store/base-state-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"base-state-handler.js","sourceRoot":"","sources":["../../src/store/base-state-handler.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -51,6 +51,10 @@ type CounterBucketSelection = { bucket: number };
|
|
|
51
51
|
type CounterBucketState = { bucket: number };
|
|
52
52
|
type SetState = { openItems: Set<string> };
|
|
53
53
|
type SetActions = { toggle: (id: string) => void };
|
|
54
|
+
type CounterSubscribable = {
|
|
55
|
+
subscribe: (listener: (value: CounterState) => void) => () => void;
|
|
56
|
+
getSnapshot: () => CounterState;
|
|
57
|
+
};
|
|
54
58
|
|
|
55
59
|
class CounterNativeStateHandler extends NativeStateHandler<CounterState, CounterActions> {
|
|
56
60
|
constructor(initialCount = 0) {
|
|
@@ -139,6 +143,37 @@ class CounterNativeBucketBridgeStateHandler extends NativeStateHandler<
|
|
|
139
143
|
}
|
|
140
144
|
}
|
|
141
145
|
|
|
146
|
+
class CounterNamedNativeBridgeStateHandler extends NativeStateHandler<
|
|
147
|
+
CounterState,
|
|
148
|
+
{ noop: () => void }
|
|
149
|
+
> {
|
|
150
|
+
constructor(private readonly onCounterSync: (counterState: CounterState) => void) {
|
|
151
|
+
super({
|
|
152
|
+
initialState: {
|
|
153
|
+
count: -1,
|
|
154
|
+
},
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
bindNamedCounter(service: CounterSubscribable, subscriptionName = 'namedSubscription') {
|
|
159
|
+
this.bindSubscribable<CounterState, CounterState>(
|
|
160
|
+
subscriptionName,
|
|
161
|
+
service,
|
|
162
|
+
(nextCounterState) => {
|
|
163
|
+
this.onCounterSync(nextCounterState);
|
|
164
|
+
this.setState({ count: nextCounterState.count }, 'sync-counter');
|
|
165
|
+
},
|
|
166
|
+
(counterState) => counterState
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
getActions(): { noop: () => void } {
|
|
171
|
+
return {
|
|
172
|
+
noop: () => undefined,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
142
177
|
class SetNativeStateHandler extends NativeStateHandler<SetState, SetActions> {
|
|
143
178
|
constructor() {
|
|
144
179
|
super({
|
|
@@ -165,6 +200,27 @@ class SetNativeStateHandler extends NativeStateHandler<SetState, SetActions> {
|
|
|
165
200
|
}
|
|
166
201
|
}
|
|
167
202
|
|
|
203
|
+
function createCounterSubscribable(initialCount: number) {
|
|
204
|
+
let listener: ((value: CounterState) => void) | null = null;
|
|
205
|
+
const unsubscribe = jest.fn(() => {
|
|
206
|
+
listener = null;
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
return {
|
|
210
|
+
emit(value: CounterState) {
|
|
211
|
+
listener?.(value);
|
|
212
|
+
},
|
|
213
|
+
service: {
|
|
214
|
+
getSnapshot: () => ({ count: initialCount }),
|
|
215
|
+
subscribe: (nextListener: (value: CounterState) => void) => {
|
|
216
|
+
listener = nextListener;
|
|
217
|
+
return unsubscribe;
|
|
218
|
+
},
|
|
219
|
+
} satisfies CounterSubscribable,
|
|
220
|
+
unsubscribe,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
|
|
168
224
|
describe('Native State Handler', () => {
|
|
169
225
|
let stateHandler: TestNativeStateHandler;
|
|
170
226
|
|
|
@@ -329,4 +385,40 @@ describe('Native State Handler', () => {
|
|
|
329
385
|
|
|
330
386
|
bridgeStateHandler.destroy();
|
|
331
387
|
});
|
|
388
|
+
|
|
389
|
+
it('should replace named bindSubscribable subscriptions when bound again with the same key', () => {
|
|
390
|
+
const syncSpy = jest.fn();
|
|
391
|
+
const bridgeStateHandler = new CounterNamedNativeBridgeStateHandler(syncSpy);
|
|
392
|
+
const firstCounter = createCounterSubscribable(1);
|
|
393
|
+
const secondCounter = createCounterSubscribable(5);
|
|
394
|
+
|
|
395
|
+
bridgeStateHandler.bindNamedCounter(firstCounter.service);
|
|
396
|
+
bridgeStateHandler.bindNamedCounter(secondCounter.service);
|
|
397
|
+
|
|
398
|
+
firstCounter.emit({ count: 2 });
|
|
399
|
+
secondCounter.emit({ count: 6 });
|
|
400
|
+
|
|
401
|
+
expect(firstCounter.unsubscribe).toHaveBeenCalledTimes(1);
|
|
402
|
+
expect(secondCounter.unsubscribe).toHaveBeenCalledTimes(0);
|
|
403
|
+
expect(syncSpy).toHaveBeenCalledTimes(3);
|
|
404
|
+
expect(syncSpy).toHaveBeenNthCalledWith(1, { count: 1 });
|
|
405
|
+
expect(syncSpy).toHaveBeenNthCalledWith(2, { count: 5 });
|
|
406
|
+
expect(syncSpy).toHaveBeenNthCalledWith(3, { count: 6 });
|
|
407
|
+
expect(bridgeStateHandler.getState()).toStrictEqual({ count: 6 });
|
|
408
|
+
|
|
409
|
+
bridgeStateHandler.destroy();
|
|
410
|
+
});
|
|
411
|
+
|
|
412
|
+
it('should unsubscribe named bindSubscribable subscriptions on destroy', () => {
|
|
413
|
+
const syncSpy = jest.fn();
|
|
414
|
+
const bridgeStateHandler = new CounterNamedNativeBridgeStateHandler(syncSpy);
|
|
415
|
+
const counter = createCounterSubscribable(3);
|
|
416
|
+
|
|
417
|
+
bridgeStateHandler.bindNamedCounter(counter.service);
|
|
418
|
+
bridgeStateHandler.destroy();
|
|
419
|
+
counter.emit({ count: 4 });
|
|
420
|
+
|
|
421
|
+
expect(counter.unsubscribe).toHaveBeenCalledTimes(1);
|
|
422
|
+
expect(syncSpy).toHaveBeenCalledTimes(1);
|
|
423
|
+
});
|
|
332
424
|
});
|
|
@@ -124,6 +124,16 @@ describe('Observable State Handler', () => {
|
|
|
124
124
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
125
125
|
});
|
|
126
126
|
|
|
127
|
+
it('should destroy named subscriptions as well', () => {
|
|
128
|
+
const spy = jest.fn();
|
|
129
|
+
|
|
130
|
+
stateHandler.namedSubscriptions.set('namedSubscription', { unsubscribe: spy });
|
|
131
|
+
|
|
132
|
+
stateHandler.destroy();
|
|
133
|
+
|
|
134
|
+
expect(spy).toHaveBeenCalledTimes(1);
|
|
135
|
+
});
|
|
136
|
+
|
|
127
137
|
it('should expose state item observable via getObservableItem', async () => {
|
|
128
138
|
const observableValue = await lastValueFrom(stateHandler.getObservableItem('test').pipe(take(1)));
|
|
129
139
|
|
|
@@ -49,6 +49,10 @@ type CounterState = { count: number };
|
|
|
49
49
|
type CounterActions = { increase: () => void };
|
|
50
50
|
type CounterBucketSelection = { bucket: number };
|
|
51
51
|
type CounterBucketState = { bucket: number };
|
|
52
|
+
type CounterSubscribable = {
|
|
53
|
+
subscribe: (listener: (value: CounterState) => void) => () => void;
|
|
54
|
+
getSnapshot: () => CounterState;
|
|
55
|
+
};
|
|
52
56
|
|
|
53
57
|
class CounterSignalStateHandler extends SignalStateHandler<CounterState, CounterActions> {
|
|
54
58
|
constructor(initialCount = 0) {
|
|
@@ -137,6 +141,58 @@ class CounterSignalBucketBridgeStateHandler extends SignalStateHandler<
|
|
|
137
141
|
}
|
|
138
142
|
}
|
|
139
143
|
|
|
144
|
+
class CounterNamedSignalBridgeStateHandler extends SignalStateHandler<
|
|
145
|
+
CounterState,
|
|
146
|
+
{ noop: () => void }
|
|
147
|
+
> {
|
|
148
|
+
constructor(private readonly onCounterSync: (counterState: CounterState) => void) {
|
|
149
|
+
super({
|
|
150
|
+
initialState: {
|
|
151
|
+
count: -1,
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
bindNamedCounter(service: CounterSubscribable, subscriptionName = 'namedSubscription') {
|
|
157
|
+
this.bindSubscribable<CounterState, CounterState>(
|
|
158
|
+
subscriptionName,
|
|
159
|
+
service,
|
|
160
|
+
(nextCounterState) => {
|
|
161
|
+
this.onCounterSync(nextCounterState);
|
|
162
|
+
this.setState({ count: nextCounterState.count }, 'sync-counter');
|
|
163
|
+
},
|
|
164
|
+
(counterState) => counterState
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
getActions(): { noop: () => void } {
|
|
169
|
+
return {
|
|
170
|
+
noop: () => undefined,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
function createCounterSubscribable(initialCount: number) {
|
|
176
|
+
let listener: ((value: CounterState) => void) | null = null;
|
|
177
|
+
const unsubscribe = jest.fn(() => {
|
|
178
|
+
listener = null;
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
return {
|
|
182
|
+
emit(value: CounterState) {
|
|
183
|
+
listener?.(value);
|
|
184
|
+
},
|
|
185
|
+
service: {
|
|
186
|
+
getSnapshot: () => ({ count: initialCount }),
|
|
187
|
+
subscribe: (nextListener: (value: CounterState) => void) => {
|
|
188
|
+
listener = nextListener;
|
|
189
|
+
return unsubscribe;
|
|
190
|
+
},
|
|
191
|
+
} satisfies CounterSubscribable,
|
|
192
|
+
unsubscribe,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
|
|
140
196
|
describe('Signal State Handler', () => {
|
|
141
197
|
let stateHandler: TestSignalStateHandler;
|
|
142
198
|
|
|
@@ -311,4 +367,40 @@ describe('Signal State Handler', () => {
|
|
|
311
367
|
|
|
312
368
|
bridgeStateHandler.destroy();
|
|
313
369
|
});
|
|
370
|
+
|
|
371
|
+
it('should replace named bindSubscribable subscriptions when bound again with the same key', () => {
|
|
372
|
+
const syncSpy = jest.fn();
|
|
373
|
+
const bridgeStateHandler = new CounterNamedSignalBridgeStateHandler(syncSpy);
|
|
374
|
+
const firstCounter = createCounterSubscribable(1);
|
|
375
|
+
const secondCounter = createCounterSubscribable(5);
|
|
376
|
+
|
|
377
|
+
bridgeStateHandler.bindNamedCounter(firstCounter.service);
|
|
378
|
+
bridgeStateHandler.bindNamedCounter(secondCounter.service);
|
|
379
|
+
|
|
380
|
+
firstCounter.emit({ count: 2 });
|
|
381
|
+
secondCounter.emit({ count: 6 });
|
|
382
|
+
|
|
383
|
+
expect(firstCounter.unsubscribe).toHaveBeenCalledTimes(1);
|
|
384
|
+
expect(secondCounter.unsubscribe).toHaveBeenCalledTimes(0);
|
|
385
|
+
expect(syncSpy).toHaveBeenCalledTimes(3);
|
|
386
|
+
expect(syncSpy).toHaveBeenNthCalledWith(1, { count: 1 });
|
|
387
|
+
expect(syncSpy).toHaveBeenNthCalledWith(2, { count: 5 });
|
|
388
|
+
expect(syncSpy).toHaveBeenNthCalledWith(3, { count: 6 });
|
|
389
|
+
expect(bridgeStateHandler.getState()).toStrictEqual({ count: 6 });
|
|
390
|
+
|
|
391
|
+
bridgeStateHandler.destroy();
|
|
392
|
+
});
|
|
393
|
+
|
|
394
|
+
it('should unsubscribe named bindSubscribable subscriptions on destroy', () => {
|
|
395
|
+
const syncSpy = jest.fn();
|
|
396
|
+
const bridgeStateHandler = new CounterNamedSignalBridgeStateHandler(syncSpy);
|
|
397
|
+
const counter = createCounterSubscribable(3);
|
|
398
|
+
|
|
399
|
+
bridgeStateHandler.bindNamedCounter(counter.service);
|
|
400
|
+
bridgeStateHandler.destroy();
|
|
401
|
+
counter.emit({ count: 4 });
|
|
402
|
+
|
|
403
|
+
expect(counter.unsubscribe).toHaveBeenCalledTimes(1);
|
|
404
|
+
expect(syncSpy).toHaveBeenCalledTimes(1);
|
|
405
|
+
});
|
|
314
406
|
});
|
|
@@ -23,6 +23,10 @@ type Subscribable<T> = {
|
|
|
23
23
|
getSnapshot?: () => T;
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
+
type ManagedSubscription = {
|
|
27
|
+
unsubscribe: () => void;
|
|
28
|
+
};
|
|
29
|
+
|
|
26
30
|
/**
|
|
27
31
|
* Configuration for Redux DevTools features enabled in this handler.
|
|
28
32
|
*/
|
|
@@ -50,7 +54,9 @@ export abstract class BaseStateHandler<S, A> implements StateSubscriptionHandler
|
|
|
50
54
|
protected devTools: DevTools | null = null;
|
|
51
55
|
|
|
52
56
|
// Keeps track of active subscriptions to allow for cleanup.
|
|
53
|
-
subscriptions:
|
|
57
|
+
subscriptions: ManagedSubscription[] = [];
|
|
58
|
+
// Tracks keyed subscriptions so handlers can replace them by name.
|
|
59
|
+
namedSubscriptions = new Map<string, ManagedSubscription>();
|
|
54
60
|
|
|
55
61
|
/**
|
|
56
62
|
* Initializes the handler with the given initial state.
|
|
@@ -114,7 +120,7 @@ export abstract class BaseStateHandler<S, A> implements StateSubscriptionHandler
|
|
|
114
120
|
*/
|
|
115
121
|
setState(newState: Partial<S>, actionName = 'change') {
|
|
116
122
|
// Merge current state with the new partial state.
|
|
117
|
-
const nextState = { ...this.getState(), ...newState };
|
|
123
|
+
const nextState = { ...structuredClone(this.getState()), ...structuredClone(newState) };
|
|
118
124
|
// Update the underlying state value (implemented by subclasses).
|
|
119
125
|
this.setStateValue(nextState);
|
|
120
126
|
// Notify DevTools of the state change.
|
|
@@ -125,8 +131,15 @@ export abstract class BaseStateHandler<S, A> implements StateSubscriptionHandler
|
|
|
125
131
|
* Cleans up all active subscriptions when the handler is destroyed.
|
|
126
132
|
*/
|
|
127
133
|
destroy(): void {
|
|
134
|
+
const subscriptions = [...this.subscriptions];
|
|
135
|
+
const namedSubscriptions = [...this.namedSubscriptions.values()];
|
|
136
|
+
|
|
137
|
+
this.subscriptions = [];
|
|
138
|
+
this.namedSubscriptions.clear();
|
|
139
|
+
|
|
128
140
|
// Execute the unsubscribe function for each tracked subscription.
|
|
129
|
-
|
|
141
|
+
subscriptions.forEach((subscription) => subscription.unsubscribe());
|
|
142
|
+
namedSubscriptions.forEach((subscription) => subscription.unsubscribe());
|
|
130
143
|
}
|
|
131
144
|
|
|
132
145
|
// Abstract methods to be implemented by concrete handlers for specific state engines (RxJS, Signals, etc.).
|
|
@@ -145,18 +158,46 @@ export abstract class BaseStateHandler<S, A> implements StateSubscriptionHandler
|
|
|
145
158
|
* Useful for bridging different state systems.
|
|
146
159
|
*/
|
|
147
160
|
protected bindSubscribable<T, Sel>(
|
|
161
|
+
subscriptionName: string,
|
|
148
162
|
service: Subscribable<T>,
|
|
149
163
|
onChange: (value: Sel) => void,
|
|
150
164
|
selector: Selector<T, Sel>,
|
|
151
165
|
isEqual?: EqualityFn<Sel>
|
|
152
166
|
): void;
|
|
153
|
-
protected bindSubscribable<T>(
|
|
154
|
-
|
|
167
|
+
protected bindSubscribable<T>(
|
|
168
|
+
subscriptionName: string,
|
|
169
|
+
service: Subscribable<T>,
|
|
170
|
+
onChange: (value: T) => void
|
|
171
|
+
): void;
|
|
172
|
+
protected bindSubscribable<T, Sel>(
|
|
155
173
|
service: Subscribable<T>,
|
|
156
174
|
onChange: (value: Sel) => void,
|
|
157
|
-
selector
|
|
175
|
+
selector: Selector<T, Sel>,
|
|
176
|
+
isEqual?: EqualityFn<Sel>
|
|
177
|
+
): void;
|
|
178
|
+
protected bindSubscribable<T>(service: Subscribable<T>, onChange: (value: T) => void): void;
|
|
179
|
+
protected bindSubscribable<T, Sel = T>(
|
|
180
|
+
subscriptionNameOrService: string | Subscribable<T>,
|
|
181
|
+
serviceOrOnChange: Subscribable<T> | ((value: Sel) => void),
|
|
182
|
+
onChangeOrSelector?: ((value: Sel) => void) | Selector<T, Sel>,
|
|
183
|
+
selectorOrIsEqual?: Selector<T, Sel> | EqualityFn<Sel>,
|
|
158
184
|
isEqual: EqualityFn<Sel> = Object.is
|
|
159
185
|
) {
|
|
186
|
+
const hasSubscriptionName = typeof subscriptionNameOrService === 'string';
|
|
187
|
+
const subscriptionName = hasSubscriptionName ? subscriptionNameOrService : null;
|
|
188
|
+
const service = (
|
|
189
|
+
hasSubscriptionName ? serviceOrOnChange : subscriptionNameOrService
|
|
190
|
+
) as Subscribable<T>;
|
|
191
|
+
const onChange = (
|
|
192
|
+
hasSubscriptionName ? onChangeOrSelector : serviceOrOnChange
|
|
193
|
+
) as (value: Sel) => void;
|
|
194
|
+
const selector = (
|
|
195
|
+
hasSubscriptionName ? selectorOrIsEqual : onChangeOrSelector
|
|
196
|
+
) as Selector<T, Sel> | undefined;
|
|
197
|
+
const equalityFn = (
|
|
198
|
+
hasSubscriptionName ? isEqual : (selectorOrIsEqual ?? Object.is)
|
|
199
|
+
) as EqualityFn<Sel>;
|
|
200
|
+
|
|
160
201
|
// Default to identity selector if none is provided.
|
|
161
202
|
const selectorFn = (selector ?? ((value: T) => value as unknown as Sel));
|
|
162
203
|
// Create a cache for selector results to avoid unnecessary updates.
|
|
@@ -172,7 +213,7 @@ export abstract class BaseStateHandler<S, A> implements StateSubscriptionHandler
|
|
|
172
213
|
selectorCache,
|
|
173
214
|
value,
|
|
174
215
|
selectorFn,
|
|
175
|
-
|
|
216
|
+
equalityFn
|
|
176
217
|
);
|
|
177
218
|
|
|
178
219
|
// Only trigger the callback if the selected value changed.
|
|
@@ -183,10 +224,19 @@ export abstract class BaseStateHandler<S, A> implements StateSubscriptionHandler
|
|
|
183
224
|
onChange(nextSelection);
|
|
184
225
|
};
|
|
185
226
|
|
|
227
|
+
if (subscriptionName) {
|
|
228
|
+
this.namedSubscriptions.get(subscriptionName)?.unsubscribe();
|
|
229
|
+
}
|
|
230
|
+
|
|
186
231
|
// Subscribe to the external source.
|
|
187
|
-
const
|
|
188
|
-
|
|
189
|
-
|
|
232
|
+
const subscription = { unsubscribe: service.subscribe(notifySelectedValue) };
|
|
233
|
+
|
|
234
|
+
if (subscriptionName) {
|
|
235
|
+
this.namedSubscriptions.set(subscriptionName, subscription);
|
|
236
|
+
} else {
|
|
237
|
+
// Track the subscription for later cleanup.
|
|
238
|
+
this.subscriptions = [...(this.subscriptions ?? []), subscription];
|
|
239
|
+
}
|
|
190
240
|
|
|
191
241
|
// If the source has a getSnapshot method and we haven't received a value yet, pull it manually.
|
|
192
242
|
if (service.getSnapshot && !receivedSyncValue) notifySelectedValue(service.getSnapshot());
|