@veams/status-quo 1.6.0 → 1.8.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/.turbo/turbo-build.log +3 -3
- package/.turbo/turbo-check$colon$types.log +1 -1
- package/.turbo/turbo-lint.log +2 -2
- package/.turbo/turbo-test.log +115 -15
- package/CHANGELOG.md +2 -0
- package/README.md +51 -7
- package/dist/config/status-quo-config.d.ts +22 -1
- package/dist/config/status-quo-config.js +46 -2
- package/dist/config/status-quo-config.js.map +1 -1
- package/dist/index.d.ts +12 -2
- package/dist/index.js +22 -2
- package/dist/index.js.map +1 -1
- package/dist/react/hooks/__tests__/state-provider.spec.js +2 -2
- package/dist/react/hooks/__tests__/state-provider.spec.js.map +1 -1
- package/dist/react/hooks/__tests__/state-selector.spec.js +48 -0
- package/dist/react/hooks/__tests__/state-selector.spec.js.map +1 -1
- package/dist/react/hooks/index.d.ts +6 -3
- package/dist/react/hooks/index.js +12 -3
- package/dist/react/hooks/index.js.map +1 -1
- package/dist/react/hooks/state-actions.d.ts +9 -1
- package/dist/react/hooks/state-actions.js +21 -2
- package/dist/react/hooks/state-actions.js.map +1 -1
- package/dist/react/hooks/state-factory.d.ts +7 -0
- package/dist/react/hooks/state-factory.js +23 -1
- package/dist/react/hooks/state-factory.js.map +1 -1
- package/dist/react/hooks/state-handler.d.ts +4 -0
- package/dist/react/hooks/state-handler.js +18 -1
- package/dist/react/hooks/state-handler.js.map +1 -1
- package/dist/react/hooks/state-provider.d.ts +18 -9
- package/dist/react/hooks/state-provider.js +25 -17
- package/dist/react/hooks/state-provider.js.map +1 -1
- package/dist/react/hooks/state-singleton.d.ts +8 -2
- package/dist/react/hooks/state-singleton.js +21 -3
- package/dist/react/hooks/state-singleton.js.map +1 -1
- package/dist/react/hooks/state-subscription-selector.d.ts +4 -0
- package/dist/react/hooks/state-subscription-selector.js +111 -4
- package/dist/react/hooks/state-subscription-selector.js.map +1 -1
- package/dist/react/hooks/state-subscription.d.ts +12 -0
- package/dist/react/hooks/state-subscription.js +49 -1
- package/dist/react/hooks/state-subscription.js.map +1 -1
- package/dist/react/index.d.ts +4 -1
- package/dist/react/index.js +5 -1
- package/dist/react/index.js.map +1 -1
- package/dist/store/__tests__/native-state-handler.spec.d.ts +1 -0
- package/dist/store/__tests__/native-state-handler.spec.js +210 -0
- package/dist/store/__tests__/native-state-handler.spec.js.map +1 -0
- package/dist/store/__tests__/observable-state-handler.spec.d.ts +7 -0
- package/dist/store/__tests__/observable-state-handler.spec.js.map +1 -1
- package/dist/store/base-state-handler.d.ts +42 -0
- package/dist/store/base-state-handler.js +73 -10
- package/dist/store/base-state-handler.js.map +1 -1
- package/dist/store/dev-tools.d.ts +42 -17
- package/dist/store/dev-tools.js +24 -8
- package/dist/store/dev-tools.js.map +1 -1
- package/dist/store/index.d.ts +7 -0
- package/dist/store/index.js +9 -0
- package/dist/store/index.js.map +1 -1
- package/dist/store/native-state-handler.d.ts +44 -0
- package/dist/store/native-state-handler.js +62 -0
- package/dist/store/native-state-handler.js.map +1 -0
- package/dist/store/observable-state-handler.d.ts +34 -0
- package/dist/store/observable-state-handler.js +45 -1
- package/dist/store/observable-state-handler.js.map +1 -1
- package/dist/store/signal-state-handler.d.ts +26 -0
- package/dist/store/signal-state-handler.js +35 -0
- package/dist/store/signal-state-handler.js.map +1 -1
- package/dist/store/state-singleton.d.ts +14 -0
- package/dist/store/state-singleton.js +20 -1
- package/dist/store/state-singleton.js.map +1 -1
- package/dist/types/types.d.ts +9 -0
- package/dist/types/types.js +3 -0
- package/dist/types/types.js.map +1 -1
- package/dist/utils/selector-cache.d.ts +17 -0
- package/dist/utils/selector-cache.js +28 -1
- package/dist/utils/selector-cache.js.map +1 -1
- package/package.json +12 -1
- package/src/config/status-quo-config.ts +64 -1
- package/src/index.ts +29 -0
- package/src/react/hooks/__tests__/state-provider.spec.tsx +2 -2
- package/src/react/hooks/__tests__/state-selector.spec.tsx +66 -0
- package/src/react/hooks/index.ts +13 -8
- package/src/react/hooks/state-actions.tsx +23 -2
- package/src/react/hooks/state-factory.tsx +34 -0
- package/src/react/hooks/state-handler.tsx +15 -0
- package/src/react/hooks/state-provider.tsx +36 -40
- package/src/react/hooks/state-singleton.tsx +37 -7
- package/src/react/hooks/state-subscription-selector.tsx +151 -3
- package/src/react/hooks/state-subscription.tsx +75 -0
- package/src/react/index.ts +16 -1
- package/src/store/__tests__/native-state-handler.spec.ts +291 -0
- package/src/store/__tests__/observable-state-handler.spec.ts +8 -0
- package/src/store/base-state-handler.ts +89 -12
- package/src/store/dev-tools.ts +72 -27
- package/src/store/index.ts +16 -0
- package/src/store/native-state-handler.ts +98 -0
- package/src/store/observable-state-handler.ts +57 -0
- package/src/store/signal-state-handler.ts +47 -1
- package/src/store/state-singleton.ts +30 -0
- package/src/types/types.ts +16 -0
- package/src/utils/selector-cache.ts +37 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-subscription-selector.js","sourceRoot":"","sources":["../../../src/react/hooks/state-subscription-selector.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAElE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"state-subscription-selector.js","sourceRoot":"","sources":["../../../src/react/hooks/state-subscription-selector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
import type { StateSingleton } from '../../store/state-singleton.js';
|
|
2
2
|
import type { StateSubscriptionHandler } from '../../types/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Type signatures for selector and equality functions.
|
|
5
|
+
*/
|
|
3
6
|
type StateSelector<State, SelectedState> = (state: State) => SelectedState;
|
|
4
7
|
type EqualityFn<SelectedState> = (current: SelectedState, next: SelectedState) => boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Custom hook to subscribe to a state handler or singleton and receive its state and actions.
|
|
10
|
+
* Correctly manages shared instances and reference counting.
|
|
11
|
+
*/
|
|
5
12
|
export declare function useStateSubscription<V, A>(source: StateSubscriptionHandler<V, A>): [V, A];
|
|
6
13
|
export declare function useStateSubscription<V, A, Sel>(source: StateSubscriptionHandler<V, A>, selector: StateSelector<V, Sel>, isEqual?: EqualityFn<Sel>): [Sel, A];
|
|
7
14
|
export declare function useStateSubscription<V, A>(source: StateSingleton<V, A>): [V, A];
|
|
8
15
|
export declare function useStateSubscription<V, A, Sel>(source: StateSingleton<V, A>, selector: StateSelector<V, Sel>, isEqual?: EqualityFn<Sel>): [Sel, A];
|
|
16
|
+
/**
|
|
17
|
+
* Custom hook to subscribe to the state handler provided by the nearest StateProvider.
|
|
18
|
+
*/
|
|
19
|
+
export declare function useProvidedStateSubscription<V, A>(): [V, A];
|
|
20
|
+
export declare function useProvidedStateSubscription<V, A, Sel>(selector: StateSelector<V, Sel>, isEqual?: EqualityFn<Sel>): [Sel, A];
|
|
9
21
|
export {};
|
|
@@ -1,53 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility hook for subscribing to a state handler or a state singleton.
|
|
3
|
+
* Manages the lifecycle and reference counting for shared state handler instances.
|
|
4
|
+
*/
|
|
1
5
|
import { useEffect, useMemo } from 'react';
|
|
2
6
|
import { useStateActions } from './state-actions.js';
|
|
3
7
|
import { useStateSubscriptionSelector } from './state-subscription-selector.js';
|
|
8
|
+
import { useProvidedStateHandler } from './state-provider.js';
|
|
9
|
+
/**
|
|
10
|
+
* Global map to track reference counts for singleton state handler instances.
|
|
11
|
+
* Used to determine when it's safe to destroy a shared singleton.
|
|
12
|
+
*/
|
|
4
13
|
const singletonReferences = new WeakMap();
|
|
14
|
+
/**
|
|
15
|
+
* Default identity selector returns the whole state.
|
|
16
|
+
*/
|
|
5
17
|
const identitySelector = (state) => state;
|
|
18
|
+
/**
|
|
19
|
+
* Type guard function to check if a source is a StateSingleton.
|
|
20
|
+
*/
|
|
6
21
|
function isStateSingleton(source) {
|
|
22
|
+
// Check for the presence of the getInstance method.
|
|
7
23
|
return 'getInstance' in source;
|
|
8
24
|
}
|
|
9
|
-
export function useStateSubscription(
|
|
25
|
+
export function useStateSubscription(
|
|
26
|
+
// Implementation of the overloaded useStateSubscription hook.
|
|
27
|
+
source,
|
|
28
|
+
// Selector function to derive a specific value from the state.
|
|
29
|
+
selector = identitySelector,
|
|
30
|
+
// Optional equality function to compare selected values for changes.
|
|
31
|
+
isEqual = Object.is) {
|
|
32
|
+
// Determine if the source is a singleton instance or a direct state handler.
|
|
10
33
|
const singletonSource = isStateSingleton(source) ? source : null;
|
|
34
|
+
// Resolve the final state subscription handler instance to use.
|
|
11
35
|
const stateSubscriptionHandler = useMemo(() => {
|
|
36
|
+
// If it's a singleton, access its managed instance.
|
|
12
37
|
if (singletonSource) {
|
|
13
38
|
return singletonSource.getInstance();
|
|
14
39
|
}
|
|
40
|
+
// Otherwise, return the source handler instance directly.
|
|
15
41
|
return source;
|
|
16
42
|
}, [singletonSource, source]);
|
|
43
|
+
// Use an effect to manage the lifecycle and reference count of singleton instances.
|
|
17
44
|
useEffect(() => {
|
|
45
|
+
// If the source is not a singleton, no lifecycle management is needed here.
|
|
18
46
|
if (!singletonSource) {
|
|
19
47
|
return undefined;
|
|
20
48
|
}
|
|
49
|
+
// Cast the source to access management properties and retrieve the current reference.
|
|
21
50
|
const singleton = singletonSource;
|
|
22
51
|
const sharedStateHandler = stateSubscriptionHandler;
|
|
23
52
|
const singletonReference = singletonReferences.get(singleton);
|
|
53
|
+
// Update the reference count for the singleton instance.
|
|
24
54
|
if (!singletonReference || singletonReference.stateHandler !== sharedStateHandler) {
|
|
55
|
+
// Initialize the count if it doesn't already exist or has changed.
|
|
25
56
|
singletonReferences.set(singleton, { count: 1, stateHandler: sharedStateHandler });
|
|
26
57
|
}
|
|
27
58
|
else {
|
|
59
|
+
// Increment the consumer count.
|
|
28
60
|
singletonReference.count += 1;
|
|
29
61
|
}
|
|
62
|
+
// Return an effect cleanup function to decrement the count when the component unmounts.
|
|
30
63
|
return () => {
|
|
64
|
+
// Access the active reference for the singleton.
|
|
31
65
|
const activeReference = singletonReferences.get(singleton);
|
|
66
|
+
// If no active reference is found, do nothing.
|
|
32
67
|
if (!activeReference || activeReference.stateHandler !== sharedStateHandler) {
|
|
33
68
|
return;
|
|
34
69
|
}
|
|
70
|
+
// Decrement the consumer count.
|
|
35
71
|
activeReference.count -= 1;
|
|
72
|
+
// If there are still active consumers, do not destroy the instance.
|
|
36
73
|
if (activeReference.count <= 0) {
|
|
74
|
+
// Remove the reference from the map when the count reaches zero.
|
|
37
75
|
singletonReferences.delete(singleton);
|
|
76
|
+
// Only proceed with destruction if destroyOnNoConsumers is explicitly enabled.
|
|
38
77
|
if (singleton.destroyOnNoConsumers !== true) {
|
|
39
78
|
return;
|
|
40
79
|
}
|
|
80
|
+
// Use the singleton's internal destroy method if available.
|
|
41
81
|
if (singleton.destroyInstance) {
|
|
42
82
|
singleton.destroyInstance();
|
|
43
83
|
return;
|
|
44
84
|
}
|
|
85
|
+
// Otherwise, invoke the handler's destroy method directly.
|
|
45
86
|
stateSubscriptionHandler.destroy();
|
|
46
87
|
}
|
|
47
88
|
};
|
|
48
89
|
}, [singletonSource, stateSubscriptionHandler]);
|
|
90
|
+
// Select and subscribe to the state value using the useStateSubscriptionSelector hook.
|
|
49
91
|
const state = useStateSubscriptionSelector(stateSubscriptionHandler, selector, isEqual, !singletonSource);
|
|
92
|
+
// Retrieve the set of actions from the state handler.
|
|
50
93
|
const actions = useStateActions(stateSubscriptionHandler);
|
|
94
|
+
// Return the selected state and its actions as a tuple.
|
|
51
95
|
return [state, actions];
|
|
52
96
|
}
|
|
97
|
+
export function useProvidedStateSubscription(selector = identitySelector, isEqual = Object.is) {
|
|
98
|
+
const stateHandler = useProvidedStateHandler();
|
|
99
|
+
return useStateSubscription(stateHandler, selector, isEqual);
|
|
100
|
+
}
|
|
53
101
|
//# sourceMappingURL=state-subscription.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-subscription.js","sourceRoot":"","sources":["../../../src/react/hooks/state-subscription.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"state-subscription.js","sourceRoot":"","sources":["../../../src/react/hooks/state-subscription.tsx"],"names":[],"mappings":"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"}
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Export core React hooks and components for Status Quo.
|
|
3
|
+
*/
|
|
4
|
+
export { StateProvider, useProvidedStateActions, useProvidedStateHandler, useProvidedStateSubscription, useStateActions, useStateFactory, useStateHandler, useStateSingleton, useStateSubscription, } from './hooks/index.js';
|
package/dist/react/index.js
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Export core React hooks and components for Status Quo.
|
|
3
|
+
*/
|
|
4
|
+
// Export hooks and components to manage state and actions.
|
|
5
|
+
export { StateProvider, useProvidedStateActions, useProvidedStateHandler, useProvidedStateSubscription, useStateActions, useStateFactory, useStateHandler, useStateSingleton, useStateSubscription, } from './hooks/index.js';
|
|
2
6
|
//# sourceMappingURL=index.js.map
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,2DAA2D;AAC3D,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,EAC5B,eAAe,EACf,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { resetStatusQuoForTests, setupStatusQuo } from '../../config/status-quo-config.js';
|
|
2
|
+
import { NativeStateHandler } from '../native-state-handler.js';
|
|
3
|
+
import { makeStateSingleton } from '../state-singleton.js';
|
|
4
|
+
class TestNativeStateHandler extends NativeStateHandler {
|
|
5
|
+
constructor({ withDevTools, distinct, useDistinctUntilChanged } = {}) {
|
|
6
|
+
super({
|
|
7
|
+
initialState: {
|
|
8
|
+
test: 'testValue',
|
|
9
|
+
test2: 'testValue2',
|
|
10
|
+
},
|
|
11
|
+
options: {
|
|
12
|
+
...(withDevTools && {
|
|
13
|
+
devTools: {
|
|
14
|
+
enabled: true,
|
|
15
|
+
namespace: 'TestNativeStateHandler',
|
|
16
|
+
},
|
|
17
|
+
}),
|
|
18
|
+
...(distinct && {
|
|
19
|
+
distinct,
|
|
20
|
+
}),
|
|
21
|
+
...(typeof useDistinctUntilChanged === 'boolean' && {
|
|
22
|
+
useDistinctUntilChanged,
|
|
23
|
+
}),
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
getActions() {
|
|
28
|
+
return {
|
|
29
|
+
testAction: () => {
|
|
30
|
+
this.setState({ test: 'newValue' });
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
class CounterNativeStateHandler extends NativeStateHandler {
|
|
36
|
+
constructor(initialCount = 0) {
|
|
37
|
+
super({
|
|
38
|
+
initialState: {
|
|
39
|
+
count: initialCount,
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
getActions() {
|
|
44
|
+
return {
|
|
45
|
+
increase: () => {
|
|
46
|
+
this.setState({ count: this.getState().count + 1 }, 'increase');
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
class CounterNativeBridgeStateHandler extends NativeStateHandler {
|
|
52
|
+
constructor(counterSingleton, onCounterSync) {
|
|
53
|
+
super({
|
|
54
|
+
initialState: {
|
|
55
|
+
count: 0,
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
const counterStateHandler = counterSingleton.getInstance();
|
|
59
|
+
this.bindSubscribable(counterStateHandler, (nextCounterState) => {
|
|
60
|
+
onCounterSync(nextCounterState);
|
|
61
|
+
this.setState({ count: nextCounterState.count }, 'sync-counter');
|
|
62
|
+
}, (counterState) => counterState);
|
|
63
|
+
}
|
|
64
|
+
getActions() {
|
|
65
|
+
return {
|
|
66
|
+
noop: () => undefined,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
class CounterNativeBucketBridgeStateHandler extends NativeStateHandler {
|
|
71
|
+
constructor(counterSingleton, onCounterSync) {
|
|
72
|
+
super({
|
|
73
|
+
initialState: {
|
|
74
|
+
bucket: -1,
|
|
75
|
+
},
|
|
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);
|
|
84
|
+
}
|
|
85
|
+
getActions() {
|
|
86
|
+
return {
|
|
87
|
+
noop: () => undefined,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
describe('Native State Handler', () => {
|
|
92
|
+
let stateHandler;
|
|
93
|
+
beforeEach(() => {
|
|
94
|
+
resetStatusQuoForTests();
|
|
95
|
+
stateHandler = new TestNativeStateHandler();
|
|
96
|
+
});
|
|
97
|
+
afterEach(() => {
|
|
98
|
+
resetStatusQuoForTests();
|
|
99
|
+
});
|
|
100
|
+
it('should provide initial state', () => {
|
|
101
|
+
expect(stateHandler.getInitialState()).toStrictEqual({
|
|
102
|
+
test: 'testValue',
|
|
103
|
+
test2: 'testValue2',
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
it('should provide current state', () => {
|
|
107
|
+
expect(stateHandler.getState()).toStrictEqual({
|
|
108
|
+
test: 'testValue',
|
|
109
|
+
test2: 'testValue2',
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
it('should support state changing via setter and merge state object on first level', () => {
|
|
113
|
+
const expected = {
|
|
114
|
+
test: 'change',
|
|
115
|
+
test2: 'testValue2',
|
|
116
|
+
};
|
|
117
|
+
stateHandler.setState(expected);
|
|
118
|
+
expect(stateHandler.getState()).toStrictEqual(expected);
|
|
119
|
+
});
|
|
120
|
+
it('should support additional subscriptions handling', () => {
|
|
121
|
+
const spy = jest.fn();
|
|
122
|
+
const subscription = { unsubscribe: spy };
|
|
123
|
+
stateHandler.subscriptions = [subscription];
|
|
124
|
+
stateHandler.destroy();
|
|
125
|
+
expect(spy).toHaveBeenCalledTimes(1);
|
|
126
|
+
});
|
|
127
|
+
it('should call subscriber when state has changed and also on initial subscribe', () => {
|
|
128
|
+
const spy = jest.fn();
|
|
129
|
+
const unsubscribe = stateHandler.subscribe(spy);
|
|
130
|
+
stateHandler.setState({
|
|
131
|
+
test: 'test',
|
|
132
|
+
});
|
|
133
|
+
stateHandler.setState({
|
|
134
|
+
test: 'test2',
|
|
135
|
+
});
|
|
136
|
+
stateHandler.setState({
|
|
137
|
+
test: 'test2',
|
|
138
|
+
});
|
|
139
|
+
stateHandler.setState({
|
|
140
|
+
test: 'test2',
|
|
141
|
+
});
|
|
142
|
+
unsubscribe();
|
|
143
|
+
expect(spy).toHaveBeenCalledTimes(3); // initial + change + change
|
|
144
|
+
});
|
|
145
|
+
it('should respect global distinct setup when disabled', () => {
|
|
146
|
+
setupStatusQuo({
|
|
147
|
+
distinct: {
|
|
148
|
+
enabled: false,
|
|
149
|
+
},
|
|
150
|
+
});
|
|
151
|
+
const handler = new TestNativeStateHandler();
|
|
152
|
+
const spy = jest.fn();
|
|
153
|
+
const unsubscribe = handler.subscribe(spy);
|
|
154
|
+
handler.setState({ test: 'same' });
|
|
155
|
+
handler.setState({ test: 'same' });
|
|
156
|
+
unsubscribe();
|
|
157
|
+
expect(spy).toHaveBeenCalledTimes(3); // initial + change + change
|
|
158
|
+
});
|
|
159
|
+
it('should respect global custom distinct comparator from setupStatusQuo', () => {
|
|
160
|
+
setupStatusQuo({
|
|
161
|
+
distinct: {
|
|
162
|
+
comparator: (previous, next) => {
|
|
163
|
+
return previous.test === next.test;
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
|
+
});
|
|
167
|
+
const handler = new TestNativeStateHandler();
|
|
168
|
+
const spy = jest.fn();
|
|
169
|
+
const unsubscribe = handler.subscribe(spy);
|
|
170
|
+
handler.setState({ test2: 'newValue2' }); // test remains same -> skipped
|
|
171
|
+
handler.setState({ test: 'newValue' }); // test changed -> notified
|
|
172
|
+
unsubscribe();
|
|
173
|
+
expect(spy).toHaveBeenCalledTimes(2); // initial + one change
|
|
174
|
+
});
|
|
175
|
+
it('should notify another state handler for each singleton counter update', () => {
|
|
176
|
+
const counterSingleton = makeStateSingleton(() => new CounterNativeStateHandler(0), {
|
|
177
|
+
destroyOnNoConsumers: false,
|
|
178
|
+
});
|
|
179
|
+
const syncSpy = jest.fn();
|
|
180
|
+
const bridgeStateHandler = new CounterNativeBridgeStateHandler(counterSingleton, syncSpy);
|
|
181
|
+
const counterStateHandler = counterSingleton.getInstance();
|
|
182
|
+
counterStateHandler.getActions().increase();
|
|
183
|
+
counterStateHandler.getActions().increase();
|
|
184
|
+
expect(syncSpy).toHaveBeenCalledTimes(3);
|
|
185
|
+
expect(syncSpy).toHaveBeenNthCalledWith(1, { count: 0 });
|
|
186
|
+
expect(syncSpy).toHaveBeenNthCalledWith(2, { count: 1 });
|
|
187
|
+
expect(syncSpy).toHaveBeenNthCalledWith(3, { count: 2 });
|
|
188
|
+
expect(bridgeStateHandler.getState()).toStrictEqual({ count: 2 });
|
|
189
|
+
bridgeStateHandler.destroy();
|
|
190
|
+
});
|
|
191
|
+
it('should support selector + equality filtering for bindSubscribable', () => {
|
|
192
|
+
const counterSingleton = makeStateSingleton(() => new CounterNativeStateHandler(0), {
|
|
193
|
+
destroyOnNoConsumers: false,
|
|
194
|
+
});
|
|
195
|
+
const syncSpy = jest.fn();
|
|
196
|
+
const bridgeStateHandler = new CounterNativeBucketBridgeStateHandler(counterSingleton, syncSpy);
|
|
197
|
+
const counterStateHandler = counterSingleton.getInstance();
|
|
198
|
+
counterStateHandler.getActions().increase(); // count 1 -> bucket 0 (no change)
|
|
199
|
+
counterStateHandler.getActions().increase(); // count 2 -> bucket 1
|
|
200
|
+
counterStateHandler.getActions().increase(); // count 3 -> bucket 1 (no change)
|
|
201
|
+
counterStateHandler.getActions().increase(); // count 4 -> bucket 2
|
|
202
|
+
expect(syncSpy).toHaveBeenCalledTimes(3);
|
|
203
|
+
expect(syncSpy).toHaveBeenNthCalledWith(1, { bucket: 0 });
|
|
204
|
+
expect(syncSpy).toHaveBeenNthCalledWith(2, { bucket: 1 });
|
|
205
|
+
expect(syncSpy).toHaveBeenNthCalledWith(3, { bucket: 2 });
|
|
206
|
+
expect(bridgeStateHandler.getState()).toStrictEqual({ bucket: 2 });
|
|
207
|
+
bridgeStateHandler.destroy();
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
//# sourceMappingURL=native-state-handler.spec.js.map
|
|
@@ -0,0 +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 +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;
|
|
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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"}
|
|
@@ -1,32 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Import necessary types for state management and Redux DevTools integration.
|
|
3
|
+
*/
|
|
1
4
|
import type { StateSubscriptionHandler } from '../types/types.js';
|
|
2
5
|
import type { EqualityFn, Selector } from '../utils/selector-cache.js';
|
|
3
6
|
import type { DevTools } from './dev-tools.js';
|
|
4
7
|
import type { DevToolsOptions } from '../config/status-quo-config.js';
|
|
8
|
+
/**
|
|
9
|
+
* Interface for objects that can be subscribed to.
|
|
10
|
+
*/
|
|
5
11
|
type Subscribable<T> = {
|
|
6
12
|
subscribe: (listener: (value: T) => void) => () => void;
|
|
7
13
|
getSnapshot?: () => T;
|
|
8
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* Abstract base class for all state handlers in the system.
|
|
17
|
+
* Implements core logic for initialization, DevTools integration, and subscriptions.
|
|
18
|
+
*/
|
|
9
19
|
export declare abstract class BaseStateHandler<S, A> implements StateSubscriptionHandler<S, A> {
|
|
10
20
|
protected readonly initialState: S;
|
|
11
21
|
protected devTools: DevTools | null;
|
|
12
22
|
subscriptions: Array<{
|
|
13
23
|
unsubscribe: () => void;
|
|
14
24
|
}>;
|
|
25
|
+
/**
|
|
26
|
+
* Initializes the handler with the given initial state.
|
|
27
|
+
*/
|
|
15
28
|
protected constructor(initialState: S);
|
|
29
|
+
/**
|
|
30
|
+
* Sets up Redux DevTools integration based on the provided options.
|
|
31
|
+
*/
|
|
16
32
|
protected initDevTools(devToolsOptions?: DevToolsOptions): void;
|
|
33
|
+
/**
|
|
34
|
+
* Returns the initial state of the handler.
|
|
35
|
+
*/
|
|
17
36
|
getInitialState(): S;
|
|
37
|
+
/**
|
|
38
|
+
* Returns the current state.
|
|
39
|
+
*/
|
|
18
40
|
getState(): S;
|
|
41
|
+
/**
|
|
42
|
+
* Alias for getState, often used by React's useSyncExternalStore.
|
|
43
|
+
*/
|
|
19
44
|
getSnapshot(): S;
|
|
45
|
+
/**
|
|
46
|
+
* Updates the state by merging the partial new state into the current one.
|
|
47
|
+
* Also sends the update to DevTools if enabled.
|
|
48
|
+
*/
|
|
20
49
|
setState(newState: Partial<S>, actionName?: string): void;
|
|
50
|
+
/**
|
|
51
|
+
* Cleans up all active subscriptions when the handler is destroyed.
|
|
52
|
+
*/
|
|
21
53
|
destroy(): void;
|
|
22
54
|
protected abstract getStateValue(): S;
|
|
23
55
|
protected abstract setStateValue(nextState: S): void;
|
|
56
|
+
/**
|
|
57
|
+
* Returns a default namespace for DevTools based on the class name.
|
|
58
|
+
*/
|
|
24
59
|
protected getDevToolsNamespace(): string;
|
|
60
|
+
/**
|
|
61
|
+
* Binds an external subscribable source to this handler's state.
|
|
62
|
+
* Useful for bridging different state systems.
|
|
63
|
+
*/
|
|
25
64
|
protected bindSubscribable<T, Sel>(service: Subscribable<T>, onChange: (value: Sel) => void, selector: Selector<T, Sel>, isEqual?: EqualityFn<Sel>): void;
|
|
26
65
|
protected bindSubscribable<T>(service: Subscribable<T>, onChange: (value: T) => void): void;
|
|
27
66
|
abstract subscribe(listener: () => void): () => void;
|
|
28
67
|
abstract subscribe(listener: (value: S) => void): () => void;
|
|
29
68
|
abstract getActions(): A;
|
|
69
|
+
/**
|
|
70
|
+
* Handles messages dispatched from the Redux DevTools extension.
|
|
71
|
+
*/
|
|
30
72
|
private handleDevToolsEvents;
|
|
31
73
|
}
|
|
32
74
|
export {};
|