@hanzogui/use-store 8.3.0 → 8.3.2
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/cjs/comparators.js +21 -0
- package/dist/cjs/comparators.js.map +1 -0
- package/dist/cjs/configureUseStore.js +9 -0
- package/dist/cjs/configureUseStore.js.map +1 -0
- package/dist/cjs/constants.js +9 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/decorators.js +10 -0
- package/dist/cjs/decorators.js.map +1 -0
- package/dist/cjs/helpers.js +50 -0
- package/dist/cjs/helpers.js.map +1 -0
- package/dist/cjs/index.js +21 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/interfaces.js +3 -0
- package/dist/cjs/interfaces.js.map +1 -0
- package/dist/cjs/observe.js +141 -0
- package/dist/cjs/observe.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/useStore.js +574 -0
- package/dist/cjs/useStore.js.map +1 -0
- package/dist/cjs/useStoreDebug.js +41 -0
- package/dist/cjs/useStoreDebug.js.map +1 -0
- package/dist/esm/comparators.js +17 -0
- package/dist/esm/comparators.js.map +1 -0
- package/dist/esm/configureUseStore.js +5 -0
- package/dist/esm/configureUseStore.js.map +1 -0
- package/dist/esm/constants.js +6 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/decorators.js +7 -0
- package/dist/esm/decorators.js.map +1 -0
- package/dist/esm/helpers.js +42 -0
- package/dist/esm/helpers.js.map +1 -0
- package/dist/esm/index.js +13 -14
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces.js +2 -0
- package/dist/esm/interfaces.js.map +1 -0
- package/dist/esm/observe.js +136 -0
- package/dist/esm/observe.js.map +1 -0
- package/dist/esm/useStore.js +556 -0
- package/dist/esm/useStore.js.map +1 -0
- package/dist/esm/useStoreDebug.js +34 -0
- package/dist/esm/useStoreDebug.js.map +1 -0
- package/package.json +18 -18
- package/src/configureUseStore.tsx +1 -1
- package/src/helpers.tsx +1 -1
- package/src/index.ts +7 -7
- package/src/interfaces.tsx +1 -1
- package/src/observe.tsx +4 -4
- package/src/useStore.tsx +6 -6
- package/src/useStoreDebug.tsx +1 -1
- package/types/comparators.d.ts +6 -0
- package/types/comparators.d.ts.map +1 -0
- package/types/configureUseStore.d.ts +4 -0
- package/types/configureUseStore.d.ts.map +1 -0
- package/types/constants.d.ts +6 -0
- package/types/constants.d.ts.map +1 -0
- package/types/decorators.d.ts +3 -0
- package/types/decorators.d.ts.map +1 -0
- package/types/helpers.d.ts +11 -0
- package/types/helpers.d.ts.map +1 -0
- package/types/index.d.ts +12 -0
- package/types/index.d.ts.map +1 -0
- package/types/interfaces.d.ts +43 -0
- package/types/interfaces.d.ts.map +1 -0
- package/types/observe.d.ts +6 -0
- package/types/observe.d.ts.map +1 -0
- package/types/useStore.d.ts +26 -0
- package/types/useStore.d.ts.map +1 -0
- package/types/useStoreDebug.d.ts +7 -0
- package/types/useStoreDebug.d.ts.map +1 -0
- package/dist/cjs/comparators.cjs +0 -41
- package/dist/cjs/comparators.native.js +0 -50
- package/dist/cjs/comparators.native.js.map +0 -1
- package/dist/cjs/configureUseStore.cjs +0 -32
- package/dist/cjs/configureUseStore.native.js +0 -35
- package/dist/cjs/configureUseStore.native.js.map +0 -1
- package/dist/cjs/constants.cjs +0 -33
- package/dist/cjs/constants.native.js +0 -36
- package/dist/cjs/constants.native.js.map +0 -1
- package/dist/cjs/decorators.cjs +0 -33
- package/dist/cjs/decorators.native.js +0 -36
- package/dist/cjs/decorators.native.js.map +0 -1
- package/dist/cjs/helpers.cjs +0 -62
- package/dist/cjs/helpers.native.js +0 -71
- package/dist/cjs/helpers.native.js.map +0 -1
- package/dist/cjs/index.cjs +0 -43
- package/dist/cjs/index.native.js +0 -65
- package/dist/cjs/index.native.js.map +0 -1
- package/dist/cjs/interfaces.cjs +0 -18
- package/dist/cjs/interfaces.native.js +0 -21
- package/dist/cjs/interfaces.native.js.map +0 -1
- package/dist/cjs/observe.cjs +0 -166
- package/dist/cjs/observe.native.js +0 -234
- package/dist/cjs/observe.native.js.map +0 -1
- package/dist/cjs/useStore.cjs +0 -467
- package/dist/cjs/useStore.native.js +0 -608
- package/dist/cjs/useStore.native.js.map +0 -1
- package/dist/cjs/useStoreDebug.cjs +0 -67
- package/dist/cjs/useStoreDebug.native.js +0 -71
- package/dist/cjs/useStoreDebug.native.js.map +0 -1
- package/dist/esm/comparators.mjs +0 -16
- package/dist/esm/comparators.mjs.map +0 -1
- package/dist/esm/comparators.native.js +0 -22
- package/dist/esm/comparators.native.js.map +0 -1
- package/dist/esm/configureUseStore.mjs +0 -6
- package/dist/esm/configureUseStore.mjs.map +0 -1
- package/dist/esm/configureUseStore.native.js +0 -6
- package/dist/esm/configureUseStore.native.js.map +0 -1
- package/dist/esm/constants.mjs +0 -7
- package/dist/esm/constants.mjs.map +0 -1
- package/dist/esm/constants.native.js +0 -7
- package/dist/esm/constants.native.js.map +0 -1
- package/dist/esm/decorators.mjs +0 -8
- package/dist/esm/decorators.mjs.map +0 -1
- package/dist/esm/decorators.native.js +0 -8
- package/dist/esm/decorators.native.js.map +0 -1
- package/dist/esm/helpers.mjs +0 -31
- package/dist/esm/helpers.mjs.map +0 -1
- package/dist/esm/helpers.native.js +0 -37
- package/dist/esm/helpers.native.js.map +0 -1
- package/dist/esm/index.mjs +0 -15
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/index.native.js +0 -34
- package/dist/esm/index.native.js.map +0 -1
- package/dist/esm/interfaces.mjs +0 -2
- package/dist/esm/interfaces.mjs.map +0 -1
- package/dist/esm/interfaces.native.js +0 -2
- package/dist/esm/interfaces.native.js.map +0 -1
- package/dist/esm/observe.mjs +0 -129
- package/dist/esm/observe.mjs.map +0 -1
- package/dist/esm/observe.native.js +0 -194
- package/dist/esm/observe.native.js.map +0 -1
- package/dist/esm/useStore.mjs +0 -415
- package/dist/esm/useStore.mjs.map +0 -1
- package/dist/esm/useStore.native.js +0 -553
- package/dist/esm/useStore.native.js.map +0 -1
- package/dist/esm/useStoreDebug.mjs +0 -27
- package/dist/esm/useStoreDebug.mjs.map +0 -1
- package/dist/esm/useStoreDebug.native.js +0 -28
- package/dist/esm/useStoreDebug.native.js.map +0 -1
|
@@ -0,0 +1,556 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { isEqualSubsetShallow } from './comparators.js';
|
|
3
|
+
import { configureOpts } from './configureUseStore.js';
|
|
4
|
+
import { UNWRAP_PROXY, defaultOptions } from './constants.js';
|
|
5
|
+
import { UNWRAP_STORE_INFO, cache, getStoreDescriptors, getStoreUid, simpleStr, } from './helpers.js';
|
|
6
|
+
import { DebugStores, shouldDebug, useCurrentComponent } from './useStoreDebug.js';
|
|
7
|
+
const idFn = (_) => _;
|
|
8
|
+
// no singleton, just react
|
|
9
|
+
export function useStore(StoreKlass, props, options = defaultOptions) {
|
|
10
|
+
const info = getOrCreateStoreInfo(StoreKlass, props, options);
|
|
11
|
+
return useStoreFromInfo(info, options.selector, options);
|
|
12
|
+
}
|
|
13
|
+
export function useStoreDebug(StoreKlass, props) {
|
|
14
|
+
return useStore(StoreKlass, props, { debug: true });
|
|
15
|
+
}
|
|
16
|
+
// singleton
|
|
17
|
+
export function createStore(StoreKlass, props, options) {
|
|
18
|
+
return getOrCreateStoreInfo(StoreKlass, props, options)?.store;
|
|
19
|
+
}
|
|
20
|
+
// use singleton with react
|
|
21
|
+
// TODO selector support with types...
|
|
22
|
+
export function useGlobalStore(instance, debug) {
|
|
23
|
+
const store = instance[UNWRAP_PROXY];
|
|
24
|
+
const uid = getStoreUid(store.constructor, store.props);
|
|
25
|
+
const info = cache.get(uid);
|
|
26
|
+
if (!info) {
|
|
27
|
+
throw new Error(`This store not created using createStore()`);
|
|
28
|
+
}
|
|
29
|
+
return useStoreFromInfo(info, undefined, { debug });
|
|
30
|
+
}
|
|
31
|
+
export function useGlobalStoreSelector(instance, selector, debug) {
|
|
32
|
+
const store = instance[UNWRAP_PROXY];
|
|
33
|
+
const uid = getStoreUid(store.constructor, store.props);
|
|
34
|
+
const info = cache.get(uid);
|
|
35
|
+
if (!info) {
|
|
36
|
+
throw new Error(`This store not created using createStore()`);
|
|
37
|
+
}
|
|
38
|
+
return useStoreFromInfo(info, selector, { debug });
|
|
39
|
+
}
|
|
40
|
+
// for creating a usable store hook
|
|
41
|
+
export function createUseStore(StoreKlass) {
|
|
42
|
+
return (props, options) => useStore(StoreKlass, props, options);
|
|
43
|
+
}
|
|
44
|
+
// for creating a usable selector hook
|
|
45
|
+
export function createUseStoreSelector(StoreKlass, selector) {
|
|
46
|
+
return (props) => {
|
|
47
|
+
return useStore(StoreKlass, props, { selector });
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
// selector hook
|
|
51
|
+
export function useStoreSelector(StoreKlass, selector, props) {
|
|
52
|
+
return useStore(StoreKlass, props, { selector });
|
|
53
|
+
}
|
|
54
|
+
const storeAccessTrackers = new Set();
|
|
55
|
+
export function trackStoresAccess(cb) {
|
|
56
|
+
storeAccessTrackers.add(cb);
|
|
57
|
+
return () => {
|
|
58
|
+
storeAccessTrackers.delete(cb);
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export function getStore(StoreKlass, props) {
|
|
62
|
+
return getStoreInfo(StoreKlass, props)?.store;
|
|
63
|
+
}
|
|
64
|
+
export function getOrCreateStore(StoreKlass, props) {
|
|
65
|
+
return getOrCreateStoreInfo(StoreKlass, props, {
|
|
66
|
+
refuseCreation: false,
|
|
67
|
+
})?.store;
|
|
68
|
+
}
|
|
69
|
+
// just like getOrCreateStoreInfo but refuses to create
|
|
70
|
+
export function getStoreInfo(StoreKlass, props) {
|
|
71
|
+
return getOrCreateStoreInfo(StoreKlass, props, {
|
|
72
|
+
refuseCreation: true,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
const onCreateListeners = new Set();
|
|
76
|
+
export function onCreateStore(cb) {
|
|
77
|
+
onCreateListeners.add(cb);
|
|
78
|
+
return () => {
|
|
79
|
+
onCreateListeners.delete(cb);
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function getOrCreateStoreInfo(StoreKlass, props, options, propsKeyCalculated) {
|
|
83
|
+
if (!StoreKlass) {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
const uid = getStoreUid(StoreKlass, propsKeyCalculated ?? props);
|
|
87
|
+
if (!options?.avoidCache && cache.has(uid)) {
|
|
88
|
+
return cache.get(uid);
|
|
89
|
+
}
|
|
90
|
+
if (options?.refuseCreation) {
|
|
91
|
+
throw new Error(`No store exists (${StoreKlass.name}) with props: ${props}`);
|
|
92
|
+
}
|
|
93
|
+
// init
|
|
94
|
+
const storeInstance = new StoreKlass(props);
|
|
95
|
+
// add props
|
|
96
|
+
storeInstance.props = props;
|
|
97
|
+
const getters = {};
|
|
98
|
+
const actions = {};
|
|
99
|
+
const stateKeys = new Set();
|
|
100
|
+
const descriptors = getStoreDescriptors(storeInstance);
|
|
101
|
+
for (const key in descriptors) {
|
|
102
|
+
const descriptor = descriptors[key];
|
|
103
|
+
if (typeof descriptor.value === 'function') {
|
|
104
|
+
// actions
|
|
105
|
+
actions[key] = descriptor.value;
|
|
106
|
+
}
|
|
107
|
+
else if (typeof descriptor.get === 'function') {
|
|
108
|
+
getters[key] = descriptor.get;
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
if (key !== 'props' && key[0] !== '_') {
|
|
112
|
+
stateKeys.add(key);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
const keyComparators = storeInstance['_comparators'];
|
|
117
|
+
const listeners = new Set();
|
|
118
|
+
const storeInfo = {
|
|
119
|
+
uid,
|
|
120
|
+
keyComparators,
|
|
121
|
+
storeInstance,
|
|
122
|
+
getters,
|
|
123
|
+
stateKeys,
|
|
124
|
+
props,
|
|
125
|
+
actions,
|
|
126
|
+
debug: options?.debug,
|
|
127
|
+
disableTracking: false,
|
|
128
|
+
gettersState: {
|
|
129
|
+
getCache: new Map(),
|
|
130
|
+
depsToGetter: new Map(),
|
|
131
|
+
curGetKeys: new Set(),
|
|
132
|
+
isGetting: false,
|
|
133
|
+
},
|
|
134
|
+
listeners,
|
|
135
|
+
trackers: new Set(),
|
|
136
|
+
version: 0,
|
|
137
|
+
subscribe: (onChanged) => {
|
|
138
|
+
listeners.add(onChanged);
|
|
139
|
+
return () => {
|
|
140
|
+
listeners.delete(onChanged);
|
|
141
|
+
};
|
|
142
|
+
},
|
|
143
|
+
triggerUpdate: () => {
|
|
144
|
+
storeInfo.version = (storeInfo.version + 1) % Number.MAX_SAFE_INTEGER;
|
|
145
|
+
for (const cb of listeners) {
|
|
146
|
+
cb();
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
const store = createProxiedStore(
|
|
151
|
+
// we assign store right after and proxiedStore never accesses it until later on
|
|
152
|
+
storeInfo);
|
|
153
|
+
// uses more memory when on
|
|
154
|
+
if (process.env.NODE_ENV === 'development') {
|
|
155
|
+
allStores[StoreKlass.name + uid] = store;
|
|
156
|
+
}
|
|
157
|
+
// if has a mount function call it
|
|
158
|
+
store.mount?.();
|
|
159
|
+
// @ts-ignore
|
|
160
|
+
storeInfo.store = store;
|
|
161
|
+
const result = storeInfo;
|
|
162
|
+
// still set even when avoidCache is true (hmr)
|
|
163
|
+
cache.set(uid, result);
|
|
164
|
+
onCreateListeners.forEach((cb) => cb(result));
|
|
165
|
+
return result;
|
|
166
|
+
}
|
|
167
|
+
export const allStores = {};
|
|
168
|
+
if (process.env.NODE_ENV === 'development') {
|
|
169
|
+
globalThis['Store'] || (globalThis['Store'] = allStores);
|
|
170
|
+
}
|
|
171
|
+
const emptyObj = {};
|
|
172
|
+
const selectKeys = (obj, keys) => {
|
|
173
|
+
if (!keys.length) {
|
|
174
|
+
return emptyObj;
|
|
175
|
+
}
|
|
176
|
+
const res = {};
|
|
177
|
+
for (const key of keys) {
|
|
178
|
+
res[key] = obj[key];
|
|
179
|
+
}
|
|
180
|
+
return res;
|
|
181
|
+
};
|
|
182
|
+
let isInReaction = false;
|
|
183
|
+
export const setIsInReaction = (val) => {
|
|
184
|
+
isInReaction = val;
|
|
185
|
+
};
|
|
186
|
+
function useStoreFromInfo(info, userSelector, options) {
|
|
187
|
+
const store = info?.store;
|
|
188
|
+
const internal = React.useRef(undefined);
|
|
189
|
+
const component = useCurrentComponent();
|
|
190
|
+
if (!internal.current) {
|
|
191
|
+
internal.current = {
|
|
192
|
+
component,
|
|
193
|
+
tracked: new Set(),
|
|
194
|
+
last: null,
|
|
195
|
+
lastKeys: null,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
const curInternal = internal.current;
|
|
199
|
+
const shouldPrintDebug = options?.debug;
|
|
200
|
+
const getSnapshot = React.useCallback(() => {
|
|
201
|
+
if (!info || !store)
|
|
202
|
+
return;
|
|
203
|
+
const curInternal = internal.current;
|
|
204
|
+
const isTracking = curInternal.tracked.size;
|
|
205
|
+
const keys = [...(!isTracking ? info.stateKeys : curInternal.tracked)];
|
|
206
|
+
const nextKeys = `${info.version}${keys.join('')}${userSelector || ''}`;
|
|
207
|
+
const lastKeys = curInternal.lastKeys;
|
|
208
|
+
// avoid updates
|
|
209
|
+
if (nextKeys === curInternal.lastKeys) {
|
|
210
|
+
return curInternal.last;
|
|
211
|
+
}
|
|
212
|
+
curInternal.lastKeys = nextKeys;
|
|
213
|
+
let snap;
|
|
214
|
+
// dont track during selector
|
|
215
|
+
info.disableTracking = true;
|
|
216
|
+
const last = curInternal.last;
|
|
217
|
+
if (userSelector) {
|
|
218
|
+
snap = userSelector(store);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
snap = selectKeys(store, keys);
|
|
222
|
+
}
|
|
223
|
+
info.disableTracking = false;
|
|
224
|
+
// this wasn't updating in AnimationsStore
|
|
225
|
+
const isUnchanged = (!userSelector && !isTracking && last) ||
|
|
226
|
+
(typeof last !== 'undefined' &&
|
|
227
|
+
isEqualSubsetShallow(last, snap, {
|
|
228
|
+
keyComparators: info.keyComparators,
|
|
229
|
+
}));
|
|
230
|
+
if (shouldPrintDebug) {
|
|
231
|
+
console.info('🌑 getSnapshot', {
|
|
232
|
+
storeState: selectKeys(store, Object.keys(store)),
|
|
233
|
+
userSelector,
|
|
234
|
+
info,
|
|
235
|
+
isUnchanged,
|
|
236
|
+
component,
|
|
237
|
+
keys,
|
|
238
|
+
last,
|
|
239
|
+
snap,
|
|
240
|
+
curInternal,
|
|
241
|
+
nextKeys,
|
|
242
|
+
lastKeys,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
if (isUnchanged) {
|
|
246
|
+
return last;
|
|
247
|
+
}
|
|
248
|
+
curInternal.last = snap;
|
|
249
|
+
return snap;
|
|
250
|
+
}, [store]);
|
|
251
|
+
// sync by default
|
|
252
|
+
const state = React.useSyncExternalStore(info?.subscribe || idFn, getSnapshot, getSnapshot);
|
|
253
|
+
if (!info || !store || !state) {
|
|
254
|
+
return state;
|
|
255
|
+
}
|
|
256
|
+
if (userSelector) {
|
|
257
|
+
return state;
|
|
258
|
+
}
|
|
259
|
+
return new Proxy(store, {
|
|
260
|
+
get(target, key) {
|
|
261
|
+
// be sure to touch the value for tracking purposes
|
|
262
|
+
const curVal = Reflect.get(target, key);
|
|
263
|
+
// while in reactions, don't proxy to old state as they aren't inside of react render
|
|
264
|
+
if (isInReaction) {
|
|
265
|
+
return curVal;
|
|
266
|
+
}
|
|
267
|
+
const keyString = key; // fine for our uses
|
|
268
|
+
if (info.stateKeys.has(keyString) || keyString in info.getters) {
|
|
269
|
+
if (shouldPrintDebug) {
|
|
270
|
+
console.info('👀 tracking', keyString);
|
|
271
|
+
}
|
|
272
|
+
curInternal.tracked.add(keyString);
|
|
273
|
+
}
|
|
274
|
+
if (Reflect.has(state, key)) {
|
|
275
|
+
return Reflect.get(state, key);
|
|
276
|
+
}
|
|
277
|
+
return curVal;
|
|
278
|
+
},
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
let setters = new Set();
|
|
282
|
+
const logStack = new Set();
|
|
283
|
+
function createProxiedStore(storeInfo) {
|
|
284
|
+
const { actions, storeInstance, getters, gettersState } = storeInfo;
|
|
285
|
+
const { getCache, curGetKeys, depsToGetter } = gettersState;
|
|
286
|
+
const constr = storeInstance.constructor;
|
|
287
|
+
const shouldDebug = storeInfo.debug ?? DebugStores.has(constr);
|
|
288
|
+
let didSet = false;
|
|
289
|
+
const wrappedActions = {};
|
|
290
|
+
// pre-setup actions
|
|
291
|
+
for (const key in actions) {
|
|
292
|
+
if (key === 'subscribe') {
|
|
293
|
+
continue;
|
|
294
|
+
}
|
|
295
|
+
// wrap action and call didSet after
|
|
296
|
+
const actionFn = actions[key];
|
|
297
|
+
// yes its odd but bug in router needs to be figured out to fix
|
|
298
|
+
// and all it does is deopt slightly and silence get
|
|
299
|
+
const isGetFn = key.startsWith('get');
|
|
300
|
+
// wrap actions for tracking
|
|
301
|
+
wrappedActions[key] = function useStoreAction(...args) {
|
|
302
|
+
let res;
|
|
303
|
+
if (isGetFn || gettersState.isGetting) {
|
|
304
|
+
return Reflect.apply(actionFn, proxiedStore, args);
|
|
305
|
+
}
|
|
306
|
+
if (process.env.NODE_ENV === 'development' && shouldDebug) {
|
|
307
|
+
console.info('(debug) startAction', key);
|
|
308
|
+
}
|
|
309
|
+
res = Reflect.apply(actionFn, proxiedStore, args);
|
|
310
|
+
if (res instanceof Promise) {
|
|
311
|
+
return res.then(finishAction);
|
|
312
|
+
}
|
|
313
|
+
finishAction();
|
|
314
|
+
return res;
|
|
315
|
+
};
|
|
316
|
+
// dev mode do nice logging
|
|
317
|
+
if (process.env.NODE_ENV === 'development') {
|
|
318
|
+
if (!key.startsWith('get') && !key.startsWith('_') && key !== 'subscribe') {
|
|
319
|
+
const ogAction = wrappedActions[key];
|
|
320
|
+
wrappedActions[key] = new Proxy(ogAction, {
|
|
321
|
+
apply(target, thisArg, args) {
|
|
322
|
+
const isDebugging = shouldDebug || storeInfo.debug;
|
|
323
|
+
const shouldLog = process.env.LOG_LEVEL !== '0' &&
|
|
324
|
+
(isDebugging || configureOpts.logLevel !== 'error');
|
|
325
|
+
if (!shouldLog) {
|
|
326
|
+
return Reflect.apply(target, thisArg, args);
|
|
327
|
+
}
|
|
328
|
+
setters = new Set();
|
|
329
|
+
const curSetters = setters;
|
|
330
|
+
const isTopLevelLogger = logStack.size == 0;
|
|
331
|
+
const logs = new Set();
|
|
332
|
+
logStack.add(logs);
|
|
333
|
+
let res;
|
|
334
|
+
const id = counter++;
|
|
335
|
+
try {
|
|
336
|
+
// 🏃♀️ run action here now
|
|
337
|
+
res = Reflect.apply(target, thisArg, args);
|
|
338
|
+
}
|
|
339
|
+
catch (err) {
|
|
340
|
+
console.error('Error', err);
|
|
341
|
+
throw err;
|
|
342
|
+
}
|
|
343
|
+
finally {
|
|
344
|
+
logStack.add('end');
|
|
345
|
+
const name = constr.name;
|
|
346
|
+
const color = strColor(name);
|
|
347
|
+
const simpleArgs = args.map(simpleStr);
|
|
348
|
+
logs.add([
|
|
349
|
+
`%c 🌑 ${id} ${name.padStart(isTopLevelLogger ? 8 : 4)}%c.${key}(${simpleArgs.join(', ')})${isTopLevelLogger && logStack.size > 1 ? ` (+${logStack.size - 1})` : ''}`,
|
|
350
|
+
`color: ${color};`,
|
|
351
|
+
'color: black;',
|
|
352
|
+
]);
|
|
353
|
+
if (curSetters.size) {
|
|
354
|
+
curSetters.forEach(({ key, value }) => {
|
|
355
|
+
if (typeof value === 'string' ||
|
|
356
|
+
typeof value === 'number' ||
|
|
357
|
+
typeof value === 'boolean') {
|
|
358
|
+
logs.add([` SET ${key} ${value}`, value]);
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
logs.add([` SET ${key}`, value]);
|
|
362
|
+
}
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
if (isTopLevelLogger) {
|
|
366
|
+
let error = null;
|
|
367
|
+
try {
|
|
368
|
+
for (const item of logStack) {
|
|
369
|
+
if (item === 'end') {
|
|
370
|
+
console.groupEnd();
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
373
|
+
const [head, ...rest] = item;
|
|
374
|
+
if (head) {
|
|
375
|
+
console.groupCollapsed(...head);
|
|
376
|
+
console.groupCollapsed('...');
|
|
377
|
+
console.info('args', args);
|
|
378
|
+
console.info('response', res);
|
|
379
|
+
console.groupCollapsed('trace');
|
|
380
|
+
console.trace();
|
|
381
|
+
console.groupEnd();
|
|
382
|
+
console.groupEnd();
|
|
383
|
+
for (const [name, ...log] of rest) {
|
|
384
|
+
console.groupCollapsed(name);
|
|
385
|
+
console.info(...log);
|
|
386
|
+
console.groupEnd();
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
else {
|
|
390
|
+
console.info('Weird log', head, ...rest);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
catch (err) {
|
|
395
|
+
error = err;
|
|
396
|
+
}
|
|
397
|
+
for (const _ of logStack) {
|
|
398
|
+
console.groupEnd();
|
|
399
|
+
}
|
|
400
|
+
if (error) {
|
|
401
|
+
console.error(`error loggin`, error);
|
|
402
|
+
}
|
|
403
|
+
logStack.clear();
|
|
404
|
+
}
|
|
405
|
+
return res;
|
|
406
|
+
}
|
|
407
|
+
},
|
|
408
|
+
});
|
|
409
|
+
}
|
|
410
|
+
function hashCode(str) {
|
|
411
|
+
let hash = 0;
|
|
412
|
+
for (let i = 0; i < str.length; i++) {
|
|
413
|
+
hash = str.charCodeAt(i) + ((hash << 5) - hash);
|
|
414
|
+
}
|
|
415
|
+
return hash;
|
|
416
|
+
}
|
|
417
|
+
function strColor(str) {
|
|
418
|
+
return `hsl(${hashCode(str) % 360}, 90%, 40%)`;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
const finishAction = (val) => {
|
|
423
|
+
if (process.env.NODE_ENV === 'development' && shouldDebug) {
|
|
424
|
+
console.info('(debug) finishAction', { didSet });
|
|
425
|
+
}
|
|
426
|
+
if (didSet) {
|
|
427
|
+
storeInfo.triggerUpdate();
|
|
428
|
+
didSet = false;
|
|
429
|
+
}
|
|
430
|
+
return val;
|
|
431
|
+
};
|
|
432
|
+
let isTriggering = false;
|
|
433
|
+
const proxiedStore = new Proxy(storeInstance, {
|
|
434
|
+
// GET
|
|
435
|
+
get(_, key) {
|
|
436
|
+
// setup action one time
|
|
437
|
+
if (key in wrappedActions) {
|
|
438
|
+
return wrappedActions[key];
|
|
439
|
+
}
|
|
440
|
+
if (key in passThroughKeys) {
|
|
441
|
+
return Reflect.get(storeInstance, key);
|
|
442
|
+
}
|
|
443
|
+
if (key === UNWRAP_PROXY) {
|
|
444
|
+
return storeInstance;
|
|
445
|
+
}
|
|
446
|
+
if (key === UNWRAP_STORE_INFO) {
|
|
447
|
+
return storeInfo;
|
|
448
|
+
}
|
|
449
|
+
if (storeAccessTrackers.size) {
|
|
450
|
+
storeAccessTrackers.forEach((cb) => cb(storeInfo));
|
|
451
|
+
}
|
|
452
|
+
if (typeof key !== 'string') {
|
|
453
|
+
return Reflect.get(storeInstance, key);
|
|
454
|
+
}
|
|
455
|
+
// non-actions...
|
|
456
|
+
if (!storeInfo.disableTracking) {
|
|
457
|
+
if (gettersState.isGetting) {
|
|
458
|
+
gettersState.curGetKeys.add(key);
|
|
459
|
+
}
|
|
460
|
+
else {
|
|
461
|
+
// storeInstance[TRACK](key, shouldDebug)
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
if (key in getters) {
|
|
465
|
+
if (getCache.has(key)) {
|
|
466
|
+
return getCache.get(key);
|
|
467
|
+
}
|
|
468
|
+
// track get deps
|
|
469
|
+
curGetKeys.clear();
|
|
470
|
+
const isSubGetter = gettersState.isGetting;
|
|
471
|
+
gettersState.isGetting = true;
|
|
472
|
+
const res = getters[key].call(proxiedStore);
|
|
473
|
+
if (!isSubGetter) {
|
|
474
|
+
gettersState.isGetting = false;
|
|
475
|
+
}
|
|
476
|
+
// store inverse lookup
|
|
477
|
+
for (const gk of curGetKeys) {
|
|
478
|
+
if (!depsToGetter.has(gk)) {
|
|
479
|
+
depsToGetter.set(gk, new Set());
|
|
480
|
+
}
|
|
481
|
+
const cur = depsToGetter.get(gk);
|
|
482
|
+
cur.add(key);
|
|
483
|
+
}
|
|
484
|
+
// TODO i added this !isSubGetter, seems logical but haven't validated
|
|
485
|
+
// has diff performance tradeoffs, not sure whats desirable
|
|
486
|
+
// if (!isSubGetter) {
|
|
487
|
+
getCache.set(key, res);
|
|
488
|
+
// }
|
|
489
|
+
return res;
|
|
490
|
+
}
|
|
491
|
+
return Reflect.get(storeInstance, key);
|
|
492
|
+
},
|
|
493
|
+
// SET
|
|
494
|
+
set(target, key, value, receiver) {
|
|
495
|
+
const cur = Reflect.get(target, key);
|
|
496
|
+
const res = Reflect.set(target, key, value, receiver);
|
|
497
|
+
// only update if changed, simple compare
|
|
498
|
+
if (res && cur !== value) {
|
|
499
|
+
// clear getters cache that rely on this
|
|
500
|
+
if (typeof key === 'string') {
|
|
501
|
+
clearGetterCache(key);
|
|
502
|
+
if (shouldDebug) {
|
|
503
|
+
setters.add({ key, value });
|
|
504
|
+
if (getShouldDebug(storeInfo)) {
|
|
505
|
+
console.info('(debug) SET', res, key, value);
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
if (process.env.NODE_ENV === 'development' && shouldDebug) {
|
|
509
|
+
console.info('SET...', { key, value });
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
if (!isTriggering) {
|
|
513
|
+
// trigger only once per event loop
|
|
514
|
+
isTriggering = true;
|
|
515
|
+
waitForEventLoop(() => {
|
|
516
|
+
storeInfo.triggerUpdate();
|
|
517
|
+
isTriggering = false;
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
return res;
|
|
522
|
+
},
|
|
523
|
+
});
|
|
524
|
+
function clearGetterCache(setKey) {
|
|
525
|
+
const parentGetters = depsToGetter.get(setKey);
|
|
526
|
+
getCache.delete(setKey);
|
|
527
|
+
if (!parentGetters) {
|
|
528
|
+
return;
|
|
529
|
+
}
|
|
530
|
+
for (const gk of parentGetters) {
|
|
531
|
+
getCache.delete(gk);
|
|
532
|
+
if (depsToGetter.has(gk)) {
|
|
533
|
+
clearGetterCache(gk);
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
return proxiedStore;
|
|
538
|
+
}
|
|
539
|
+
const waitForEventLoop = process.env.NODE_ENV === 'test' || "web" === 'native'
|
|
540
|
+
? (cb) => cb()
|
|
541
|
+
: queueMicrotask;
|
|
542
|
+
let counter = 0;
|
|
543
|
+
const passThroughKeys = {
|
|
544
|
+
subscribe: true,
|
|
545
|
+
_version: true,
|
|
546
|
+
_trackers: true,
|
|
547
|
+
$$typeof: true,
|
|
548
|
+
_listeners: true,
|
|
549
|
+
_enableTracking: true,
|
|
550
|
+
};
|
|
551
|
+
function getShouldDebug(storeInfo) {
|
|
552
|
+
const info = { storeInstance: storeInfo.store };
|
|
553
|
+
const trackers = storeInfo.trackers;
|
|
554
|
+
return [...trackers].some((tracker) => tracker.component && shouldDebug(tracker.component, info));
|
|
555
|
+
}
|
|
556
|
+
//# sourceMappingURL=useStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useStore.js","sourceRoot":"","sources":["../../src/useStore.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
// const { ReactCurrentOwner } = (React as any)
|
|
3
|
+
// .__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED
|
|
4
|
+
export const useCurrentComponent = () => {
|
|
5
|
+
return {};
|
|
6
|
+
// return ReactCurrentOwner &&
|
|
7
|
+
// ReactCurrentOwner.current &&
|
|
8
|
+
// ReactCurrentOwner.current.elementType
|
|
9
|
+
// ? ReactCurrentOwner.current.elementType
|
|
10
|
+
// : {}
|
|
11
|
+
};
|
|
12
|
+
export function useDebugStoreComponent(StoreCons) {
|
|
13
|
+
const cmp = useCurrentComponent();
|
|
14
|
+
// add in outer loop to pickup immediately
|
|
15
|
+
DebugStores.add(StoreCons);
|
|
16
|
+
if (!DebugComponents.has(cmp)) {
|
|
17
|
+
DebugComponents.set(cmp, new Set());
|
|
18
|
+
}
|
|
19
|
+
const stores = DebugComponents.get(cmp);
|
|
20
|
+
stores.add(StoreCons);
|
|
21
|
+
React.useLayoutEffect(() => {
|
|
22
|
+
return () => {
|
|
23
|
+
DebugStores.delete(StoreCons);
|
|
24
|
+
stores.delete(StoreCons);
|
|
25
|
+
};
|
|
26
|
+
}, []);
|
|
27
|
+
}
|
|
28
|
+
export const shouldDebug = (component, info) => {
|
|
29
|
+
const StoreCons = info.storeInstance?.constructor;
|
|
30
|
+
return DebugComponents.get(component)?.has(StoreCons);
|
|
31
|
+
};
|
|
32
|
+
export const DebugComponents = new Map();
|
|
33
|
+
export const DebugStores = new Set();
|
|
34
|
+
//# sourceMappingURL=useStoreDebug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useStoreDebug.js","sourceRoot":"","sources":["../../src/useStoreDebug.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,+CAA+C;AAC/C,wDAAwD;AACxD,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE;IACtC,OAAO,EAAE,CAAA;IACT,8BAA8B;IAC9B,iCAAiC;IACjC,0CAA0C;IAC1C,4CAA4C;IAC5C,SAAS;AACX,CAAC,CAAA;AAED,MAAM,UAAU,sBAAsB,CAAC,SAAc;IACnD,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAA;IAEjC,0CAA0C;IAC1C,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAC1B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;IACrC,CAAC;IACD,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAE,CAAA;IACxC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAErB,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE;QACzB,OAAO,GAAG,EAAE;YACV,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YAC7B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAC1B,CAAC,CAAA;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAc,EAAE,IAAsC,EAAE,EAAE;IACpF,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAA;IACjD,OAAO,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;AACvD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAiB,CAAA;AACvD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAO,CAAA"}
|