@hanzogui/use-store 2.0.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.
Files changed (85) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +91 -0
  3. package/dist/cjs/comparators.cjs +37 -0
  4. package/dist/cjs/comparators.native.js +46 -0
  5. package/dist/cjs/comparators.native.js.map +1 -0
  6. package/dist/cjs/configureUseStore.cjs +30 -0
  7. package/dist/cjs/configureUseStore.native.js +33 -0
  8. package/dist/cjs/configureUseStore.native.js.map +1 -0
  9. package/dist/cjs/constants.cjs +31 -0
  10. package/dist/cjs/constants.native.js +34 -0
  11. package/dist/cjs/constants.native.js.map +1 -0
  12. package/dist/cjs/decorators.cjs +30 -0
  13. package/dist/cjs/decorators.native.js +33 -0
  14. package/dist/cjs/decorators.native.js.map +1 -0
  15. package/dist/cjs/helpers.cjs +55 -0
  16. package/dist/cjs/helpers.native.js +65 -0
  17. package/dist/cjs/helpers.native.js.map +1 -0
  18. package/dist/cjs/index.cjs +40 -0
  19. package/dist/cjs/index.native.js +54 -0
  20. package/dist/cjs/index.native.js.map +1 -0
  21. package/dist/cjs/interfaces.cjs +16 -0
  22. package/dist/cjs/interfaces.native.js +19 -0
  23. package/dist/cjs/interfaces.native.js.map +1 -0
  24. package/dist/cjs/observe.cjs +120 -0
  25. package/dist/cjs/observe.native.js +186 -0
  26. package/dist/cjs/observe.native.js.map +1 -0
  27. package/dist/cjs/useStore.cjs +390 -0
  28. package/dist/cjs/useStore.native.js +544 -0
  29. package/dist/cjs/useStore.native.js.map +1 -0
  30. package/dist/cjs/useStoreDebug.cjs +56 -0
  31. package/dist/cjs/useStoreDebug.native.js +65 -0
  32. package/dist/cjs/useStoreDebug.native.js.map +1 -0
  33. package/dist/esm/comparators.mjs +14 -0
  34. package/dist/esm/comparators.mjs.map +1 -0
  35. package/dist/esm/comparators.native.js +20 -0
  36. package/dist/esm/comparators.native.js.map +1 -0
  37. package/dist/esm/configureUseStore.mjs +6 -0
  38. package/dist/esm/configureUseStore.mjs.map +1 -0
  39. package/dist/esm/configureUseStore.native.js +6 -0
  40. package/dist/esm/configureUseStore.native.js.map +1 -0
  41. package/dist/esm/constants.mjs +7 -0
  42. package/dist/esm/constants.mjs.map +1 -0
  43. package/dist/esm/constants.native.js +7 -0
  44. package/dist/esm/constants.native.js.map +1 -0
  45. package/dist/esm/decorators.mjs +7 -0
  46. package/dist/esm/decorators.mjs.map +1 -0
  47. package/dist/esm/decorators.native.js +7 -0
  48. package/dist/esm/decorators.native.js.map +1 -0
  49. package/dist/esm/helpers.mjs +26 -0
  50. package/dist/esm/helpers.mjs.map +1 -0
  51. package/dist/esm/helpers.native.js +33 -0
  52. package/dist/esm/helpers.native.js.map +1 -0
  53. package/dist/esm/index.js +14 -0
  54. package/dist/esm/index.js.map +1 -0
  55. package/dist/esm/index.mjs +14 -0
  56. package/dist/esm/index.mjs.map +1 -0
  57. package/dist/esm/index.native.js +25 -0
  58. package/dist/esm/index.native.js.map +1 -0
  59. package/dist/esm/interfaces.mjs +2 -0
  60. package/dist/esm/interfaces.mjs.map +1 -0
  61. package/dist/esm/interfaces.native.js +2 -0
  62. package/dist/esm/interfaces.native.js.map +1 -0
  63. package/dist/esm/observe.mjs +85 -0
  64. package/dist/esm/observe.mjs.map +1 -0
  65. package/dist/esm/observe.native.js +148 -0
  66. package/dist/esm/observe.native.js.map +1 -0
  67. package/dist/esm/useStore.mjs +342 -0
  68. package/dist/esm/useStore.mjs.map +1 -0
  69. package/dist/esm/useStore.native.js +493 -0
  70. package/dist/esm/useStore.native.js.map +1 -0
  71. package/dist/esm/useStoreDebug.mjs +18 -0
  72. package/dist/esm/useStoreDebug.mjs.map +1 -0
  73. package/dist/esm/useStoreDebug.native.js +24 -0
  74. package/dist/esm/useStoreDebug.native.js.map +1 -0
  75. package/package.json +47 -0
  76. package/src/comparators.tsx +18 -0
  77. package/src/configureUseStore.tsx +7 -0
  78. package/src/constants.tsx +6 -0
  79. package/src/decorators.tsx +8 -0
  80. package/src/helpers.tsx +56 -0
  81. package/src/index.ts +12 -0
  82. package/src/interfaces.tsx +46 -0
  83. package/src/observe.tsx +160 -0
  84. package/src/useStore.tsx +705 -0
  85. package/src/useStoreDebug.tsx +41 -0
@@ -0,0 +1,342 @@
1
+ import React from "react";
2
+ import { isEqualSubsetShallow } from "./comparators.mjs";
3
+ import { configureOpts } from "./configureUseStore.mjs";
4
+ import { UNWRAP_PROXY, defaultOptions } from "./constants.mjs";
5
+ import { UNWRAP_STORE_INFO, cache, getStoreDescriptors, getStoreUid, simpleStr } from "./helpers.mjs";
6
+ import { DebugStores, shouldDebug, useCurrentComponent } from "./useStoreDebug.mjs";
7
+ const idFn = _ => _;
8
+ function useStore(StoreKlass, props, options = defaultOptions) {
9
+ const info = getOrCreateStoreInfo(StoreKlass, props, options);
10
+ return useStoreFromInfo(info, options.selector, options);
11
+ }
12
+ function useStoreDebug(StoreKlass, props) {
13
+ return useStore(StoreKlass, props, {
14
+ debug: !0
15
+ });
16
+ }
17
+ function createStore(StoreKlass, props, options) {
18
+ return getOrCreateStoreInfo(StoreKlass, props, options)?.store;
19
+ }
20
+ function useGlobalStore(instance, debug) {
21
+ const store = instance[UNWRAP_PROXY],
22
+ uid = getStoreUid(store.constructor, store.props),
23
+ info = cache.get(uid);
24
+ if (!info) throw new Error("This store not created using createStore()");
25
+ return useStoreFromInfo(info, void 0, {
26
+ debug
27
+ });
28
+ }
29
+ function useGlobalStoreSelector(instance, selector, debug) {
30
+ const store = instance[UNWRAP_PROXY],
31
+ uid = getStoreUid(store.constructor, store.props),
32
+ info = cache.get(uid);
33
+ if (!info) throw new Error("This store not created using createStore()");
34
+ return useStoreFromInfo(info, selector, {
35
+ debug
36
+ });
37
+ }
38
+ function createUseStore(StoreKlass) {
39
+ return (props, options) => useStore(StoreKlass, props, options);
40
+ }
41
+ function createUseStoreSelector(StoreKlass, selector) {
42
+ return props => useStore(StoreKlass, props, {
43
+ selector
44
+ });
45
+ }
46
+ function useStoreSelector(StoreKlass, selector, props) {
47
+ return useStore(StoreKlass, props, {
48
+ selector
49
+ });
50
+ }
51
+ const storeAccessTrackers = /* @__PURE__ */new Set();
52
+ function trackStoresAccess(cb) {
53
+ return storeAccessTrackers.add(cb), () => {
54
+ storeAccessTrackers.delete(cb);
55
+ };
56
+ }
57
+ function getStore(StoreKlass, props) {
58
+ return getStoreInfo(StoreKlass, props)?.store;
59
+ }
60
+ function getOrCreateStore(StoreKlass, props) {
61
+ return getOrCreateStoreInfo(StoreKlass, props, {
62
+ refuseCreation: !1
63
+ })?.store;
64
+ }
65
+ function getStoreInfo(StoreKlass, props) {
66
+ return getOrCreateStoreInfo(StoreKlass, props, {
67
+ refuseCreation: !0
68
+ });
69
+ }
70
+ const onCreateListeners = /* @__PURE__ */new Set();
71
+ function onCreateStore(cb) {
72
+ return onCreateListeners.add(cb), () => {
73
+ onCreateListeners.delete(cb);
74
+ };
75
+ }
76
+ function getOrCreateStoreInfo(StoreKlass, props, options, propsKeyCalculated) {
77
+ if (!StoreKlass) return null;
78
+ const uid = getStoreUid(StoreKlass, propsKeyCalculated ?? props);
79
+ if (!options?.avoidCache && cache.has(uid)) return cache.get(uid);
80
+ if (options?.refuseCreation) throw new Error(`No store exists (${StoreKlass.name}) with props: ${props}`);
81
+ const storeInstance = new StoreKlass(props);
82
+ storeInstance.props = props;
83
+ const getters = {},
84
+ actions = {},
85
+ stateKeys = /* @__PURE__ */new Set(),
86
+ descriptors = getStoreDescriptors(storeInstance);
87
+ for (const key in descriptors) {
88
+ const descriptor = descriptors[key];
89
+ typeof descriptor.value == "function" ? actions[key] = descriptor.value : typeof descriptor.get == "function" ? getters[key] = descriptor.get : key !== "props" && key[0] !== "_" && stateKeys.add(key);
90
+ }
91
+ const keyComparators = storeInstance._comparators,
92
+ listeners = /* @__PURE__ */new Set(),
93
+ storeInfo = {
94
+ uid,
95
+ keyComparators,
96
+ storeInstance,
97
+ getters,
98
+ stateKeys,
99
+ props,
100
+ actions,
101
+ debug: options?.debug,
102
+ disableTracking: !1,
103
+ gettersState: {
104
+ getCache: /* @__PURE__ */new Map(),
105
+ depsToGetter: /* @__PURE__ */new Map(),
106
+ curGetKeys: /* @__PURE__ */new Set(),
107
+ isGetting: !1
108
+ },
109
+ listeners,
110
+ trackers: /* @__PURE__ */new Set(),
111
+ version: 0,
112
+ subscribe: onChanged => (listeners.add(onChanged), () => {
113
+ listeners.delete(onChanged);
114
+ }),
115
+ triggerUpdate: () => {
116
+ storeInfo.version = (storeInfo.version + 1) % Number.MAX_SAFE_INTEGER;
117
+ for (const cb of listeners) cb();
118
+ }
119
+ },
120
+ store = createProxiedStore(
121
+ // we assign store right after and proxiedStore never accesses it until later on
122
+ storeInfo);
123
+ process.env.NODE_ENV === "development" && (allStores[StoreKlass.name + uid] = store), store.mount?.(), storeInfo.store = store;
124
+ const result = storeInfo;
125
+ return cache.set(uid, result), onCreateListeners.forEach(cb => cb(result)), result;
126
+ }
127
+ const allStores = {};
128
+ process.env.NODE_ENV === "development" && (globalThis.Store ||= allStores);
129
+ const emptyObj = {},
130
+ selectKeys = (obj, keys) => {
131
+ if (!keys.length) return emptyObj;
132
+ const res = {};
133
+ for (const key of keys) res[key] = obj[key];
134
+ return res;
135
+ };
136
+ let isInReaction = !1;
137
+ const setIsInReaction = val => {
138
+ isInReaction = val;
139
+ };
140
+ function useStoreFromInfo(info, userSelector, options) {
141
+ const store = info?.store,
142
+ internal = React.useRef(void 0),
143
+ component = useCurrentComponent();
144
+ internal.current || (internal.current = {
145
+ component,
146
+ tracked: /* @__PURE__ */new Set(),
147
+ last: null,
148
+ lastKeys: null
149
+ });
150
+ const curInternal = internal.current,
151
+ shouldPrintDebug = options?.debug,
152
+ getSnapshot = React.useCallback(() => {
153
+ if (!info || !store) return;
154
+ const curInternal2 = internal.current,
155
+ isTracking = curInternal2.tracked.size,
156
+ keys = [...(isTracking ? curInternal2.tracked : info.stateKeys)],
157
+ nextKeys = `${info.version}${keys.join("")}${userSelector || ""}`,
158
+ lastKeys = curInternal2.lastKeys;
159
+ if (nextKeys === curInternal2.lastKeys) return curInternal2.last;
160
+ curInternal2.lastKeys = nextKeys;
161
+ let snap;
162
+ info.disableTracking = !0;
163
+ const last = curInternal2.last;
164
+ userSelector ? snap = userSelector(store) : snap = selectKeys(store, keys), info.disableTracking = !1;
165
+ const isUnchanged = !userSelector && !isTracking && last || typeof last < "u" && isEqualSubsetShallow(last, snap, {
166
+ keyComparators: info.keyComparators
167
+ });
168
+ return shouldPrintDebug && console.info("\u{1F311} getSnapshot", {
169
+ storeState: selectKeys(store, Object.keys(store)),
170
+ userSelector,
171
+ info,
172
+ isUnchanged,
173
+ component,
174
+ keys,
175
+ last,
176
+ snap,
177
+ curInternal: curInternal2,
178
+ nextKeys,
179
+ lastKeys
180
+ }), isUnchanged ? last : (curInternal2.last = snap, snap);
181
+ }, [store]),
182
+ state = React.useSyncExternalStore(info?.subscribe || idFn, getSnapshot, getSnapshot);
183
+ return !info || !store || !state || userSelector ? state : new Proxy(store, {
184
+ get(target, key) {
185
+ const curVal = Reflect.get(target, key);
186
+ if (isInReaction) return curVal;
187
+ const keyString = key;
188
+ return (info.stateKeys.has(keyString) || keyString in info.getters) && (shouldPrintDebug && console.info("\u{1F440} tracking", keyString), curInternal.tracked.add(keyString)), Reflect.has(state, key) ? Reflect.get(state, key) : curVal;
189
+ }
190
+ });
191
+ }
192
+ let setters = /* @__PURE__ */new Set();
193
+ const logStack = /* @__PURE__ */new Set();
194
+ function createProxiedStore(storeInfo) {
195
+ const {
196
+ actions,
197
+ storeInstance,
198
+ getters,
199
+ gettersState
200
+ } = storeInfo,
201
+ {
202
+ getCache,
203
+ curGetKeys,
204
+ depsToGetter
205
+ } = gettersState,
206
+ constr = storeInstance.constructor,
207
+ shouldDebug2 = storeInfo.debug ?? DebugStores.has(constr);
208
+ let didSet = !1;
209
+ const wrappedActions = {};
210
+ for (const key in actions) {
211
+ if (key === "subscribe") continue;
212
+ const actionFn = actions[key],
213
+ isGetFn = key.startsWith("get");
214
+ if (wrappedActions[key] = function (...args) {
215
+ let res;
216
+ return isGetFn || gettersState.isGetting ? Reflect.apply(actionFn, proxiedStore, args) : (process.env.NODE_ENV === "development" && shouldDebug2 && console.info("(debug) startAction", key), res = Reflect.apply(actionFn, proxiedStore, args), res instanceof Promise ? res.then(finishAction) : (finishAction(), res));
217
+ }, process.env.NODE_ENV === "development") {
218
+ let hashCode = function (str) {
219
+ let hash = 0;
220
+ for (let i = 0; i < str.length; i++) hash = str.charCodeAt(i) + ((hash << 5) - hash);
221
+ return hash;
222
+ },
223
+ strColor = function (str) {
224
+ return `hsl(${hashCode(str) % 360}, 90%, 40%)`;
225
+ };
226
+ if (!key.startsWith("get") && !key.startsWith("_") && key !== "subscribe") {
227
+ const ogAction = wrappedActions[key];
228
+ wrappedActions[key] = new Proxy(ogAction, {
229
+ apply(target, thisArg, args) {
230
+ const isDebugging = shouldDebug2 || storeInfo.debug;
231
+ if (!(process.env.LOG_LEVEL !== "0" && (isDebugging || configureOpts.logLevel !== "error"))) return Reflect.apply(target, thisArg, args);
232
+ setters = /* @__PURE__ */new Set();
233
+ const curSetters = setters,
234
+ isTopLevelLogger = logStack.size == 0,
235
+ logs = /* @__PURE__ */new Set();
236
+ logStack.add(logs);
237
+ let res;
238
+ const id = counter++;
239
+ try {
240
+ res = Reflect.apply(target, thisArg, args);
241
+ } catch (err) {
242
+ throw console.error("Error", err), err;
243
+ } finally {
244
+ logStack.add("end");
245
+ const name = constr.name,
246
+ color = strColor(name),
247
+ simpleArgs = args.map(simpleStr);
248
+ if (logs.add([`%c \u{1F311} ${id} ${name.padStart(isTopLevelLogger ? 8 : 4)}%c.${key}(${simpleArgs.join(", ")})${isTopLevelLogger && logStack.size > 1 ? ` (+${logStack.size - 1})` : ""}`, `color: ${color};`, "color: black;"]), curSetters.size && curSetters.forEach(({
249
+ key: key2,
250
+ value
251
+ }) => {
252
+ typeof value == "string" || typeof value == "number" || typeof value == "boolean" ? logs.add([` SET ${key2} ${value}`, value]) : logs.add([` SET ${key2}`, value]);
253
+ }), isTopLevelLogger) {
254
+ let error = null;
255
+ try {
256
+ for (const item of logStack) {
257
+ if (item === "end") {
258
+ console.groupEnd();
259
+ continue;
260
+ }
261
+ const [head, ...rest] = item;
262
+ if (head) {
263
+ console.groupCollapsed(...head), console.groupCollapsed("..."), console.info("args", args), console.info("response", res), console.groupCollapsed("trace"), console.trace(), console.groupEnd(), console.groupEnd();
264
+ for (const [name2, ...log] of rest) console.groupCollapsed(name2), console.info(...log), console.groupEnd();
265
+ } else console.info("Weird log", head, ...rest);
266
+ }
267
+ } catch (err) {
268
+ error = err;
269
+ }
270
+ for (const _ of logStack) console.groupEnd();
271
+ error && console.error("error loggin", error), logStack.clear();
272
+ }
273
+ return res;
274
+ }
275
+ }
276
+ });
277
+ }
278
+ }
279
+ }
280
+ const finishAction = val => (process.env.NODE_ENV === "development" && shouldDebug2 && console.info("(debug) finishAction", {
281
+ didSet
282
+ }), didSet && (storeInfo.triggerUpdate(), didSet = !1), val);
283
+ let isTriggering = !1;
284
+ const proxiedStore = new Proxy(storeInstance, {
285
+ // GET
286
+ get(_, key) {
287
+ if (key in wrappedActions) return wrappedActions[key];
288
+ if (key in passThroughKeys) return Reflect.get(storeInstance, key);
289
+ if (key === UNWRAP_PROXY) return storeInstance;
290
+ if (key === UNWRAP_STORE_INFO) return storeInfo;
291
+ if (storeAccessTrackers.size && storeAccessTrackers.forEach(cb => cb(storeInfo)), typeof key != "string") return Reflect.get(storeInstance, key);
292
+ if (storeInfo.disableTracking || gettersState.isGetting && gettersState.curGetKeys.add(key), key in getters) {
293
+ if (getCache.has(key)) return getCache.get(key);
294
+ curGetKeys.clear();
295
+ const isSubGetter = gettersState.isGetting;
296
+ gettersState.isGetting = !0;
297
+ const res = getters[key].call(proxiedStore);
298
+ isSubGetter || (gettersState.isGetting = !1);
299
+ for (const gk of curGetKeys) depsToGetter.has(gk) || depsToGetter.set(gk, /* @__PURE__ */new Set()), depsToGetter.get(gk).add(key);
300
+ return getCache.set(key, res), res;
301
+ }
302
+ return Reflect.get(storeInstance, key);
303
+ },
304
+ // SET
305
+ set(target, key, value, receiver) {
306
+ const cur = Reflect.get(target, key),
307
+ res = Reflect.set(target, key, value, receiver);
308
+ return res && cur !== value && (typeof key == "string" && (clearGetterCache(key), shouldDebug2 && (setters.add({
309
+ key,
310
+ value
311
+ }), getShouldDebug(storeInfo) && console.info("(debug) SET", res, key, value)), process.env.NODE_ENV === "development" && shouldDebug2 && console.info("SET...", {
312
+ key,
313
+ value
314
+ })), isTriggering || (isTriggering = !0, waitForEventLoop(() => {
315
+ storeInfo.triggerUpdate(), isTriggering = !1;
316
+ }))), res;
317
+ }
318
+ });
319
+ function clearGetterCache(setKey) {
320
+ const parentGetters = depsToGetter.get(setKey);
321
+ if (getCache.delete(setKey), !!parentGetters) for (const gk of parentGetters) getCache.delete(gk), depsToGetter.has(gk) && clearGetterCache(gk);
322
+ }
323
+ return proxiedStore;
324
+ }
325
+ const waitForEventLoop = process.env.NODE_ENV === "test" ? cb => cb() : queueMicrotask;
326
+ let counter = 0;
327
+ const passThroughKeys = {
328
+ subscribe: !0,
329
+ _version: !0,
330
+ _trackers: !0,
331
+ $$typeof: !0,
332
+ _listeners: !0,
333
+ _enableTracking: !0
334
+ };
335
+ function getShouldDebug(storeInfo) {
336
+ const info = {
337
+ storeInstance: storeInfo.store
338
+ };
339
+ return [...storeInfo.trackers].some(tracker => tracker.component && shouldDebug(tracker.component, info));
340
+ }
341
+ export { allStores, createStore, createUseStore, createUseStoreSelector, getOrCreateStore, getStore, getStoreInfo, onCreateStore, setIsInReaction, trackStoresAccess, useGlobalStore, useGlobalStoreSelector, useStore, useStoreDebug, useStoreSelector };
342
+ //# sourceMappingURL=useStore.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","isEqualSubsetShallow","configureOpts","UNWRAP_PROXY","defaultOptions","UNWRAP_STORE_INFO","cache","getStoreDescriptors","getStoreUid","simpleStr","DebugStores","shouldDebug","useCurrentComponent","idFn","_","useStore","StoreKlass","props","options","info","getOrCreateStoreInfo","useStoreFromInfo","selector","useStoreDebug","debug","createStore","store","useGlobalStore","instance","uid","constructor","get","Error","useGlobalStoreSelector","createUseStore","createUseStoreSelector","useStoreSelector","storeAccessTrackers","Set","trackStoresAccess","cb","add","delete","getStore","getStoreInfo","getOrCreateStore","refuseCreation","onCreateListeners","onCreateStore","propsKeyCalculated","avoidCache","has","name","storeInstance","getters","actions","stateKeys","descriptors","key","descriptor","value","keyComparators","_comparators","listeners","storeInfo","disableTracking","gettersState","getCache","Map","depsToGetter","curGetKeys","isGetting","trackers","version","subscribe","onChanged","triggerUpdate","Number","MAX_SAFE_INTEGER","createProxiedStore","process","env","NODE_ENV","allStores","mount","result","set","forEach","globalThis","Store","emptyObj","selectKeys","obj","keys","length","res","isInReaction","setIsInReaction","val","userSelector","internal","useRef","component","current","tracked","last","lastKeys","curInternal","shouldPrintDebug","getSnapshot","useCallback","curInternal2","isTracking","size","nextKeys","join","snap","isUnchanged","console","storeState","Object","state","useSyncExternalStore","Proxy","target","curVal","Reflect","keyString","setters","logStack","constr","shouldDebug2","didSet","wrappedActions","actionFn","isGetFn","startsWith","args","apply","proxiedStore","Promise","then","finishAction","hashCode","str","hash","i","charCodeAt","strColor","ogAction","thisArg","isDebugging","LOG_LEVEL","logLevel","curSetters","isTopLevelLogger","logs","id","counter","err","error","color","simpleArgs","map","padStart","key2","item","groupEnd","head","rest","groupCollapsed","trace","name2","log","clear","isTriggering","passThroughKeys","isSubGetter","call","gk","receiver","cur","clearGetterCache","getShouldDebug","waitForEventLoop","setKey","parentGetters","queueMicrotask","_version","_trackers","$$typeof","_listeners","_enableTracking","some","tracker"],"sources":["../../src/useStore.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}