@veams/status-quo 1.7.0 → 1.8.1

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 (95) hide show
  1. package/.turbo/turbo-build.log +3 -3
  2. package/.turbo/turbo-test.log +115 -15
  3. package/CHANGELOG.md +2 -0
  4. package/README.md +51 -7
  5. package/dist/config/status-quo-config.d.ts +22 -1
  6. package/dist/config/status-quo-config.js +46 -2
  7. package/dist/config/status-quo-config.js.map +1 -1
  8. package/dist/index.d.ts +13 -3
  9. package/dist/index.js +22 -2
  10. package/dist/index.js.map +1 -1
  11. package/dist/react/hooks/__tests__/state-provider.spec.js +2 -2
  12. package/dist/react/hooks/__tests__/state-provider.spec.js.map +1 -1
  13. package/dist/react/hooks/index.d.ts +6 -3
  14. package/dist/react/hooks/index.js +12 -3
  15. package/dist/react/hooks/index.js.map +1 -1
  16. package/dist/react/hooks/state-actions.d.ts +9 -1
  17. package/dist/react/hooks/state-actions.js +21 -2
  18. package/dist/react/hooks/state-actions.js.map +1 -1
  19. package/dist/react/hooks/state-factory.d.ts +7 -0
  20. package/dist/react/hooks/state-factory.js +23 -1
  21. package/dist/react/hooks/state-factory.js.map +1 -1
  22. package/dist/react/hooks/state-handler.d.ts +4 -0
  23. package/dist/react/hooks/state-handler.js +18 -1
  24. package/dist/react/hooks/state-handler.js.map +1 -1
  25. package/dist/react/hooks/state-provider.d.ts +18 -9
  26. package/dist/react/hooks/state-provider.js +25 -17
  27. package/dist/react/hooks/state-provider.js.map +1 -1
  28. package/dist/react/hooks/state-singleton.d.ts +8 -2
  29. package/dist/react/hooks/state-singleton.js +21 -3
  30. package/dist/react/hooks/state-singleton.js.map +1 -1
  31. package/dist/react/hooks/state-subscription-selector.d.ts +4 -0
  32. package/dist/react/hooks/state-subscription-selector.js +64 -8
  33. package/dist/react/hooks/state-subscription-selector.js.map +1 -1
  34. package/dist/react/hooks/state-subscription.d.ts +12 -0
  35. package/dist/react/hooks/state-subscription.js +49 -1
  36. package/dist/react/hooks/state-subscription.js.map +1 -1
  37. package/dist/react/index.d.ts +4 -1
  38. package/dist/react/index.js +5 -1
  39. package/dist/react/index.js.map +1 -1
  40. package/dist/store/__tests__/native-state-handler.spec.d.ts +1 -0
  41. package/dist/store/__tests__/native-state-handler.spec.js +210 -0
  42. package/dist/store/__tests__/native-state-handler.spec.js.map +1 -0
  43. package/dist/store/__tests__/observable-state-handler.spec.d.ts +7 -0
  44. package/dist/store/__tests__/observable-state-handler.spec.js.map +1 -1
  45. package/dist/store/base-state-handler.d.ts +42 -0
  46. package/dist/store/base-state-handler.js +73 -10
  47. package/dist/store/base-state-handler.js.map +1 -1
  48. package/dist/store/dev-tools.d.ts +42 -17
  49. package/dist/store/dev-tools.js +24 -8
  50. package/dist/store/dev-tools.js.map +1 -1
  51. package/dist/store/index.d.ts +7 -0
  52. package/dist/store/index.js +9 -0
  53. package/dist/store/index.js.map +1 -1
  54. package/dist/store/native-state-handler.d.ts +44 -0
  55. package/dist/store/native-state-handler.js +62 -0
  56. package/dist/store/native-state-handler.js.map +1 -0
  57. package/dist/store/observable-state-handler.d.ts +34 -0
  58. package/dist/store/observable-state-handler.js +45 -1
  59. package/dist/store/observable-state-handler.js.map +1 -1
  60. package/dist/store/signal-state-handler.d.ts +26 -0
  61. package/dist/store/signal-state-handler.js +35 -0
  62. package/dist/store/signal-state-handler.js.map +1 -1
  63. package/dist/store/state-singleton.d.ts +14 -0
  64. package/dist/store/state-singleton.js +20 -1
  65. package/dist/store/state-singleton.js.map +1 -1
  66. package/dist/types/types.d.ts +9 -0
  67. package/dist/types/types.js +3 -0
  68. package/dist/types/types.js.map +1 -1
  69. package/dist/utils/selector-cache.d.ts +17 -0
  70. package/dist/utils/selector-cache.js +28 -1
  71. package/dist/utils/selector-cache.js.map +1 -1
  72. package/package.json +26 -1
  73. package/src/config/status-quo-config.ts +64 -1
  74. package/src/index.ts +31 -2
  75. package/src/react/hooks/__tests__/state-provider.spec.tsx +2 -2
  76. package/src/react/hooks/index.ts +13 -8
  77. package/src/react/hooks/state-actions.tsx +23 -2
  78. package/src/react/hooks/state-factory.tsx +34 -0
  79. package/src/react/hooks/state-handler.tsx +15 -0
  80. package/src/react/hooks/state-provider.tsx +36 -40
  81. package/src/react/hooks/state-singleton.tsx +37 -7
  82. package/src/react/hooks/state-subscription-selector.tsx +85 -7
  83. package/src/react/hooks/state-subscription.tsx +75 -0
  84. package/src/react/index.ts +16 -1
  85. package/src/store/__tests__/native-state-handler.spec.ts +291 -0
  86. package/src/store/__tests__/observable-state-handler.spec.ts +8 -0
  87. package/src/store/base-state-handler.ts +89 -12
  88. package/src/store/dev-tools.ts +72 -27
  89. package/src/store/index.ts +16 -0
  90. package/src/store/native-state-handler.ts +98 -0
  91. package/src/store/observable-state-handler.ts +57 -0
  92. package/src/store/signal-state-handler.ts +47 -1
  93. package/src/store/state-singleton.ts +30 -0
  94. package/src/types/types.ts +16 -0
  95. package/src/utils/selector-cache.ts +37 -0
@@ -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,8 @@
1
+ declare global {
2
+ interface Window {
3
+ __REDUX_DEVTOOLS_EXTENSION__?: {
4
+ connect: (options: any) => any;
5
+ };
6
+ }
7
+ }
1
8
  export {};
@@ -1 +1 @@
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
+ {"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 {};
@@ -1,90 +1,153 @@
1
+ /**
2
+ * Import internal configuration and utility functions.
3
+ */
1
4
  import { resolveDevToolsOptions } from '../config/status-quo-config.js';
2
5
  import { createSelectorCache, selectWithCache } from '../utils/selector-cache.js';
3
6
  import { withDevTools } from './dev-tools.js';
7
+ /**
8
+ * Configuration for Redux DevTools features enabled in this handler.
9
+ */
4
10
  const devToolsFeatures = {
5
- pause: true,
6
- lock: true,
7
- persist: false,
8
- export: true,
9
- import: 'custom',
10
- jump: true,
11
- skip: true,
12
- reorder: true,
13
- dispatch: false,
14
- test: false,
11
+ pause: true, // Allow pausing the recording of actions.
12
+ lock: true, // Allow locking the state.
13
+ persist: false, // Do not persist state across reloads by default.
14
+ export: true, // Allow exporting the state/actions.
15
+ import: 'custom', // Use custom import logic.
16
+ jump: true, // Allow jumping to specific states.
17
+ skip: true, // Allow skipping specific actions.
18
+ reorder: true, // Allow reordering actions.
19
+ dispatch: false, // Do not allow dispatching actions from DevTools.
20
+ test: false, // Do not generate tests.
15
21
  };
22
+ /**
23
+ * Abstract base class for all state handlers in the system.
24
+ * Implements core logic for initialization, DevTools integration, and subscriptions.
25
+ */
16
26
  export class BaseStateHandler {
27
+ // Stores the initial state passed during construction.
17
28
  initialState;
29
+ // Holds the Redux DevTools instance if enabled.
18
30
  devTools = null;
31
+ // Keeps track of active subscriptions to allow for cleanup.
19
32
  subscriptions = [];
33
+ /**
34
+ * Initializes the handler with the given initial state.
35
+ */
20
36
  constructor(initialState) {
21
37
  this.initialState = initialState;
22
38
  }
39
+ /**
40
+ * Sets up Redux DevTools integration based on the provided options.
41
+ */
23
42
  initDevTools(devToolsOptions) {
43
+ // Resolve the final DevTools configuration.
24
44
  const resolvedOptions = resolveDevToolsOptions(devToolsOptions);
45
+ // If DevTools is disabled, stop here.
25
46
  if (!resolvedOptions.enabled) {
26
47
  this.devTools = null;
27
48
  return;
28
49
  }
50
+ // Determine the namespace for the DevTools instance.
29
51
  const namespace = devToolsOptions?.namespace ?? this.getDevToolsNamespace();
52
+ // Connect to the Redux DevTools extension.
30
53
  this.devTools = withDevTools(this.initialState, {
31
54
  name: namespace,
32
55
  instanceId: namespace.toLowerCase().replaceAll(' ', '-'),
33
56
  actionCreators: this.getActions(),
34
57
  features: devToolsFeatures,
35
58
  });
59
+ // Subscribe to events coming from the DevTools extension (e.g., time travel).
36
60
  this.devTools?.subscribe(this.handleDevToolsEvents);
37
61
  }
62
+ /**
63
+ * Returns the initial state of the handler.
64
+ */
38
65
  getInitialState() {
39
66
  return this.initialState;
40
67
  }
68
+ /**
69
+ * Returns the current state.
70
+ */
41
71
  getState() {
42
72
  return this.getStateValue();
43
73
  }
74
+ /**
75
+ * Alias for getState, often used by React's useSyncExternalStore.
76
+ */
44
77
  getSnapshot() {
45
78
  return this.getState();
46
79
  }
80
+ /**
81
+ * Updates the state by merging the partial new state into the current one.
82
+ * Also sends the update to DevTools if enabled.
83
+ */
47
84
  setState(newState, actionName = 'change') {
85
+ // Merge current state with the new partial state.
48
86
  const nextState = { ...this.getState(), ...newState };
87
+ // Update the underlying state value (implemented by subclasses).
49
88
  this.setStateValue(nextState);
89
+ // Notify DevTools of the state change.
50
90
  this.devTools?.send(actionName, nextState);
51
91
  }
92
+ /**
93
+ * Cleans up all active subscriptions when the handler is destroyed.
94
+ */
52
95
  destroy() {
96
+ // Execute the unsubscribe function for each tracked subscription.
53
97
  this.subscriptions.forEach((subscription) => subscription.unsubscribe());
54
98
  }
99
+ /**
100
+ * Returns a default namespace for DevTools based on the class name.
101
+ */
55
102
  getDevToolsNamespace() {
56
103
  return this.constructor.name || 'Store';
57
104
  }
58
105
  bindSubscribable(service, onChange, selector, isEqual = Object.is) {
106
+ // Default to identity selector if none is provided.
59
107
  const selectorFn = (selector ?? ((value) => value));
108
+ // Create a cache for selector results to avoid unnecessary updates.
60
109
  const selectorCache = createSelectorCache();
110
+ // Flag to track if we received an initial value synchronously during subscription.
61
111
  let receivedSyncValue = false;
112
+ // Internal function to handle value changes from the external source.
62
113
  const notifySelectedValue = (value) => {
63
114
  receivedSyncValue = true;
115
+ // Extract the selected value and check if it has actually changed.
64
116
  const { value: nextSelection, hasChanged } = selectWithCache(selectorCache, value, selectorFn, isEqual);
117
+ // Only trigger the callback if the selected value changed.
65
118
  if (!hasChanged) {
66
119
  return;
67
120
  }
68
121
  onChange(nextSelection);
69
122
  };
123
+ // Subscribe to the external source.
70
124
  const unsubscribe = service.subscribe(notifySelectedValue);
125
+ // Track the subscription for later cleanup.
71
126
  this.subscriptions = [...(this.subscriptions ?? []), { unsubscribe }];
127
+ // If the source has a getSnapshot method and we haven't received a value yet, pull it manually.
72
128
  if (service.getSnapshot && !receivedSyncValue)
73
129
  notifySelectedValue(service.getSnapshot());
74
130
  }
131
+ /**
132
+ * Handles messages dispatched from the Redux DevTools extension.
133
+ */
75
134
  handleDevToolsEvents = (message) => {
135
+ // We only care about DISPATCH type messages (e.g., reset, jump).
76
136
  if (message.type !== 'DISPATCH') {
77
137
  return;
78
138
  }
79
139
  switch (message.payload.type) {
140
+ // Revert state to the initial state.
80
141
  case 'RESET':
81
142
  this.setStateValue(this.getInitialState());
82
143
  this.devTools?.init(this.getInitialState());
83
144
  break;
145
+ // Commit the current state in DevTools.
84
146
  case 'COMMIT':
85
147
  this.setStateValue(this.getState());
86
148
  this.devTools?.init(this.getState());
87
149
  break;
150
+ // Handle time travel actions.
88
151
  case 'JUMP_TO_STATE':
89
152
  case 'JUMP_TO_ACTION':
90
153
  this.setStateValue(JSON.parse(message.state));
@@ -1 +1 @@
1
- {"version":3,"file":"base-state-handler.js","sourceRoot":"","sources":["../../src/store/base-state-handler.ts"],"names":[],"mappings":"AAAA,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;AAY9C,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,eAAe,GAAG,sBAAsB,CAAC,eAAe,CAAC,CAAC;QAEhE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,eAAe,EAAE,SAAS,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5E,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE;YAC9C,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;YACxD,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;IAKS,oBAAoB;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,OAAO,CAAC;IAC1C,CAAC;IASS,gBAAgB,CACxB,OAAwB,EACxB,QAA8B,EAC9B,QAA2B,EAC3B,UAA2B,MAAM,CAAC,EAAE;QAEpC,MAAM,UAAU,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAQ,EAAE,EAAE,CAAC,KAAuB,CAAC,CAAC,CAAC;QACzE,MAAM,aAAa,GAAG,mBAAmB,EAAO,CAAC;QACjD,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAE9B,MAAM,mBAAmB,GAAG,CAAC,KAAQ,EAAE,EAAE;YACvC,iBAAiB,GAAG,IAAI,CAAC;YACzB,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,eAAe,CAC1D,aAAa,EACb,KAAK,EACL,UAAU,EACV,OAAO,CACR,CAAC;YAEF,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO;YACT,CAAC;YAED,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC1B,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC3D,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAEtE,IAAI,OAAO,CAAC,WAAW,IAAI,CAAC,iBAAiB;YAAE,mBAAmB,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5F,CAAC;IAMO,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,CAAM,CAAC,CAAC;gBACnD,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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"}
@@ -1,23 +1,48 @@
1
- declare global {
2
- interface Window {
3
- __REDUX_DEVTOOLS_EXTENSION__?: {
4
- connect: (opts: Record<string, unknown>) => DevTools;
5
- };
6
- }
7
- }
8
- export type MessagePayload = {
1
+ /**
2
+ * Redux DevTools extension types and constants.
3
+ */
4
+ /**
5
+ * Interface for messages dispatched from the Redux DevTools extension.
6
+ */
7
+ export interface MessagePayload {
9
8
  type: string;
10
9
  payload: {
11
10
  type: string;
12
- actionId: number;
11
+ stateIndex?: number;
12
+ id?: string;
13
13
  };
14
14
  state: string;
15
- id: string;
16
- source: '@devtools-extension';
17
- };
18
- export type DevTools = {
19
- init: (state: unknown) => void;
15
+ }
16
+ /**
17
+ * Interface for the Redux DevTools instance returned by the extension.
18
+ */
19
+ export interface DevTools {
20
20
  send: (action: string, state: unknown) => void;
21
- subscribe: (cb: (message: MessagePayload) => void) => void;
22
- };
23
- export declare function withDevTools<S>(initialState: S, options?: {}): DevTools | null;
21
+ subscribe: (listener: (message: MessagePayload) => void) => () => void;
22
+ init: (state: unknown) => void;
23
+ }
24
+ /**
25
+ * Interface for Redux DevTools connection options.
26
+ */
27
+ export interface DevToolsConnectionOptions {
28
+ name?: string;
29
+ instanceId?: string;
30
+ actionCreators?: unknown;
31
+ features?: {
32
+ pause?: boolean;
33
+ lock?: boolean;
34
+ persist?: boolean;
35
+ export?: boolean | 'custom';
36
+ import?: boolean | 'custom';
37
+ jump?: boolean;
38
+ skip?: boolean;
39
+ reorder?: boolean;
40
+ dispatch?: boolean;
41
+ test?: boolean;
42
+ };
43
+ }
44
+ /**
45
+ * Connects the state handler to the Redux DevTools browser extension.
46
+ * Returns a DevTools object to communicate with the extension.
47
+ */
48
+ export declare function withDevTools(initialState: unknown, options: DevToolsConnectionOptions): DevTools | null;
@@ -1,13 +1,29 @@
1
- export function withDevTools(initialState, options = {}) {
2
- if (typeof window === 'undefined') {
1
+ /**
2
+ * Redux DevTools extension types and constants.
3
+ */
4
+ /**
5
+ * Connects the state handler to the Redux DevTools browser extension.
6
+ * Returns a DevTools object to communicate with the extension.
7
+ */
8
+ export function withDevTools(initialState, options) {
9
+ // Check if the Redux DevTools extension is available in the browser.
10
+ const extension = globalThis?.__REDUX_DEVTOOLS_EXTENSION__;
11
+ // If the extension is not found, we cannot connect.
12
+ if (!extension) {
3
13
  return null;
4
14
  }
5
- if (!window.__REDUX_DEVTOOLS_EXTENSION__) {
6
- console.error('Status Quo :: Devtools Extension is not installed!');
7
- return null;
8
- }
9
- const devTools = window.__REDUX_DEVTOOLS_EXTENSION__.connect(options);
15
+ // Connect to the extension and get an instance.
16
+ const devTools = extension.connect(options);
17
+ // Initialize the DevTools instance with the initial state.
10
18
  devTools.init(initialState);
11
- return devTools;
19
+ // Return an interface to interact with the extension.
20
+ return {
21
+ // Send a new action and state to the DevTools.
22
+ send: (action, state) => devTools.send(action, state),
23
+ // Subscribe to events coming from the DevTools.
24
+ subscribe: (listener) => devTools.subscribe(listener),
25
+ // Re-initialize the state in the extension.
26
+ init: (state) => devTools.init(state),
27
+ };
12
28
  }
13
29
  //# sourceMappingURL=dev-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dev-tools.js","sourceRoot":"","sources":["../../src/store/dev-tools.ts"],"names":[],"mappings":"AAyBA,MAAM,UAAU,YAAY,CAAI,YAAe,EAAE,OAAO,GAAG,EAAE;IAC3D,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,IAAI,CAAC,MAAM,CAAC,4BAA4B,EAAE,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,MAAM,QAAQ,GAAG,MAAM,CAAC,4BAA4B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtE,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAG5B,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"dev-tools.js","sourceRoot":"","sources":["../../src/store/dev-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0DH;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,YAAqB,EAAE,OAAkC;IACpF,qEAAqE;IACrE,MAAM,SAAS,GAAI,UAAkB,EAAE,4BAA4B,CAAC;IAEpE,oDAAoD;IACpD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gDAAgD;IAChD,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5C,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAE5B,sDAAsD;IACtD,OAAO;QACL,+CAA+C;QAC/C,IAAI,EAAE,CAAC,MAAc,EAAE,KAAc,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;QACtE,gDAAgD;QAChD,SAAS,EAAE,CAAC,QAA2C,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC;QACxF,4CAA4C;QAC5C,IAAI,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;KAC/C,CAAC;AACJ,CAAC"}
@@ -1,5 +1,12 @@
1
+ /**
2
+ * Export core state handler classes and factory functions.
3
+ */
1
4
  export { BaseStateHandler } from './base-state-handler.js';
5
+ export { NativeStateHandler } from './native-state-handler.js';
2
6
  export { ObservableStateHandler } from './observable-state-handler.js';
3
7
  export { SignalStateHandler } from './signal-state-handler.js';
8
+ /**
9
+ * Export singleton related types and factory function.
10
+ */
4
11
  export type { StateSingleton, StateSingletonOptions } from './state-singleton.js';
5
12
  export { makeStateSingleton } from './state-singleton.js';