srasm 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -57,10 +57,17 @@ function deepEqual(obj1, obj2) {
57
57
  // src/utils/tryRegisterSRASMDevtools.ts
58
58
  function tryRegisterSRASMDevtools(storeName, api) {
59
59
  if (typeof window === "undefined") return;
60
- const dt = window.__SRASM_DEVTOOLS__;
61
- if (dt && typeof dt.registerStore === "function") {
62
- dt.registerStore(storeName, api);
63
- }
60
+ const w = window;
61
+ let tries = 0;
62
+ const t = setInterval(() => {
63
+ const dt = w.__SRASM_DEVTOOLS__;
64
+ if (dt && typeof dt.registerStore === "function") {
65
+ dt.registerStore(storeName, api);
66
+ clearInterval(t);
67
+ }
68
+ tries++;
69
+ if (tries > 50) clearInterval(t);
70
+ }, 100);
64
71
  }
65
72
 
66
73
  // src/context/createStateStore.ts
@@ -114,14 +121,14 @@ function createStateStore(initialSlices) {
114
121
  selector ?? ((s) => s),
115
122
  options?.isEqual ?? Object.is
116
123
  );
117
- const setState2 = (0, import_react.useCallback)(
124
+ const setState = (0, import_react.useCallback)(
118
125
  (payload) => updateSlice(slice, payload, !!options?.useDeepEqualCheck),
119
126
  [slice, options?.useDeepEqualCheck]
120
127
  );
121
- return { state: selected, setState: setState2 };
128
+ return { state: selected, setState };
122
129
  }
123
130
  function useSRASMAsync(slice, fetcher, tags = []) {
124
- const { state, setState: setState2 } = useSRASM(slice);
131
+ const { state, setState } = useSRASM(slice);
125
132
  const [loading, setLoading] = import_react.default.useState(false);
126
133
  const [error, setError] = import_react.default.useState(null);
127
134
  const fetchData = (0, import_react.useCallback)(async () => {
@@ -129,13 +136,13 @@ function createStateStore(initialSlices) {
129
136
  setError(null);
130
137
  try {
131
138
  const data = await fetcher();
132
- setState2(data);
139
+ setState(data);
133
140
  } catch (err) {
134
141
  setError(err);
135
142
  } finally {
136
143
  setLoading(false);
137
144
  }
138
- }, [slice, fetcher, setState2]);
145
+ }, [slice, fetcher, setState]);
139
146
  import_react.default.useEffect(() => {
140
147
  fetchData();
141
148
  }, [JSON.stringify(tags)]);
@@ -149,21 +156,21 @@ function createStateStore(initialSlices) {
149
156
  const SRASMProvider = ({ children }) => {
150
157
  return children;
151
158
  };
152
- const getState = () => storeState;
153
- const subscribe = (listener) => {
154
- const unsubs = Object.keys(storeState).map(
155
- (k) => subscribeSlice(k, listener)
156
- );
157
- return () => unsubs.forEach((u) => u());
158
- };
159
- const setState = (key, payload, useDeepEqualCheck = false) => {
160
- updateSlice(key, payload, useDeepEqualCheck);
159
+ const storeAPI = {
160
+ getState: () => storeState,
161
+ // Subscribe to ALL slices
162
+ subscribe: (listener) => {
163
+ const unsubs = Object.keys(storeState).map(
164
+ (k) => subscribeSlice(k, listener)
165
+ );
166
+ return () => unsubs.forEach((u) => u());
167
+ },
168
+ // THIS is the ONLY setter that should mutate state
169
+ setState: (key, payload, useDeepEqualCheck = false) => {
170
+ updateSlice(key, payload, useDeepEqualCheck);
171
+ }
161
172
  };
162
- tryRegisterSRASMDevtools("default", {
163
- getState,
164
- subscribe,
165
- setState
166
- });
173
+ tryRegisterSRASMDevtools("default", storeAPI);
167
174
  return { SRASMProvider, useSRASM, useSRASMAsync };
168
175
  }
169
176
 
package/dist/index.js CHANGED
@@ -21,10 +21,17 @@ function deepEqual(obj1, obj2) {
21
21
  // src/utils/tryRegisterSRASMDevtools.ts
22
22
  function tryRegisterSRASMDevtools(storeName, api) {
23
23
  if (typeof window === "undefined") return;
24
- const dt = window.__SRASM_DEVTOOLS__;
25
- if (dt && typeof dt.registerStore === "function") {
26
- dt.registerStore(storeName, api);
27
- }
24
+ const w = window;
25
+ let tries = 0;
26
+ const t = setInterval(() => {
27
+ const dt = w.__SRASM_DEVTOOLS__;
28
+ if (dt && typeof dt.registerStore === "function") {
29
+ dt.registerStore(storeName, api);
30
+ clearInterval(t);
31
+ }
32
+ tries++;
33
+ if (tries > 50) clearInterval(t);
34
+ }, 100);
28
35
  }
29
36
 
30
37
  // src/context/createStateStore.ts
@@ -78,14 +85,14 @@ function createStateStore(initialSlices) {
78
85
  selector ?? ((s) => s),
79
86
  options?.isEqual ?? Object.is
80
87
  );
81
- const setState2 = useCallback(
88
+ const setState = useCallback(
82
89
  (payload) => updateSlice(slice, payload, !!options?.useDeepEqualCheck),
83
90
  [slice, options?.useDeepEqualCheck]
84
91
  );
85
- return { state: selected, setState: setState2 };
92
+ return { state: selected, setState };
86
93
  }
87
94
  function useSRASMAsync(slice, fetcher, tags = []) {
88
- const { state, setState: setState2 } = useSRASM(slice);
95
+ const { state, setState } = useSRASM(slice);
89
96
  const [loading, setLoading] = React.useState(false);
90
97
  const [error, setError] = React.useState(null);
91
98
  const fetchData = useCallback(async () => {
@@ -93,13 +100,13 @@ function createStateStore(initialSlices) {
93
100
  setError(null);
94
101
  try {
95
102
  const data = await fetcher();
96
- setState2(data);
103
+ setState(data);
97
104
  } catch (err) {
98
105
  setError(err);
99
106
  } finally {
100
107
  setLoading(false);
101
108
  }
102
- }, [slice, fetcher, setState2]);
109
+ }, [slice, fetcher, setState]);
103
110
  React.useEffect(() => {
104
111
  fetchData();
105
112
  }, [JSON.stringify(tags)]);
@@ -113,21 +120,21 @@ function createStateStore(initialSlices) {
113
120
  const SRASMProvider = ({ children }) => {
114
121
  return children;
115
122
  };
116
- const getState = () => storeState;
117
- const subscribe = (listener) => {
118
- const unsubs = Object.keys(storeState).map(
119
- (k) => subscribeSlice(k, listener)
120
- );
121
- return () => unsubs.forEach((u) => u());
122
- };
123
- const setState = (key, payload, useDeepEqualCheck = false) => {
124
- updateSlice(key, payload, useDeepEqualCheck);
123
+ const storeAPI = {
124
+ getState: () => storeState,
125
+ // Subscribe to ALL slices
126
+ subscribe: (listener) => {
127
+ const unsubs = Object.keys(storeState).map(
128
+ (k) => subscribeSlice(k, listener)
129
+ );
130
+ return () => unsubs.forEach((u) => u());
131
+ },
132
+ // THIS is the ONLY setter that should mutate state
133
+ setState: (key, payload, useDeepEqualCheck = false) => {
134
+ updateSlice(key, payload, useDeepEqualCheck);
135
+ }
125
136
  };
126
- tryRegisterSRASMDevtools("default", {
127
- getState,
128
- subscribe,
129
- setState
130
- });
137
+ tryRegisterSRASMDevtools("default", storeAPI);
131
138
  return { SRASMProvider, useSRASM, useSRASMAsync };
132
139
  }
133
140
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "srasm",
3
3
  "private": false,
4
- "version": "0.0.4",
4
+ "version": "0.0.5",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist",