@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.
Files changed (139) hide show
  1. package/dist/cjs/comparators.js +21 -0
  2. package/dist/cjs/comparators.js.map +1 -0
  3. package/dist/cjs/configureUseStore.js +9 -0
  4. package/dist/cjs/configureUseStore.js.map +1 -0
  5. package/dist/cjs/constants.js +9 -0
  6. package/dist/cjs/constants.js.map +1 -0
  7. package/dist/cjs/decorators.js +10 -0
  8. package/dist/cjs/decorators.js.map +1 -0
  9. package/dist/cjs/helpers.js +50 -0
  10. package/dist/cjs/helpers.js.map +1 -0
  11. package/dist/cjs/index.js +21 -0
  12. package/dist/cjs/index.js.map +1 -0
  13. package/dist/cjs/interfaces.js +3 -0
  14. package/dist/cjs/interfaces.js.map +1 -0
  15. package/dist/cjs/observe.js +141 -0
  16. package/dist/cjs/observe.js.map +1 -0
  17. package/dist/cjs/package.json +1 -0
  18. package/dist/cjs/useStore.js +574 -0
  19. package/dist/cjs/useStore.js.map +1 -0
  20. package/dist/cjs/useStoreDebug.js +41 -0
  21. package/dist/cjs/useStoreDebug.js.map +1 -0
  22. package/dist/esm/comparators.js +17 -0
  23. package/dist/esm/comparators.js.map +1 -0
  24. package/dist/esm/configureUseStore.js +5 -0
  25. package/dist/esm/configureUseStore.js.map +1 -0
  26. package/dist/esm/constants.js +6 -0
  27. package/dist/esm/constants.js.map +1 -0
  28. package/dist/esm/decorators.js +7 -0
  29. package/dist/esm/decorators.js.map +1 -0
  30. package/dist/esm/helpers.js +42 -0
  31. package/dist/esm/helpers.js.map +1 -0
  32. package/dist/esm/index.js +13 -14
  33. package/dist/esm/index.js.map +1 -1
  34. package/dist/esm/interfaces.js +2 -0
  35. package/dist/esm/interfaces.js.map +1 -0
  36. package/dist/esm/observe.js +136 -0
  37. package/dist/esm/observe.js.map +1 -0
  38. package/dist/esm/useStore.js +556 -0
  39. package/dist/esm/useStore.js.map +1 -0
  40. package/dist/esm/useStoreDebug.js +34 -0
  41. package/dist/esm/useStoreDebug.js.map +1 -0
  42. package/package.json +18 -18
  43. package/src/configureUseStore.tsx +1 -1
  44. package/src/helpers.tsx +1 -1
  45. package/src/index.ts +7 -7
  46. package/src/interfaces.tsx +1 -1
  47. package/src/observe.tsx +4 -4
  48. package/src/useStore.tsx +6 -6
  49. package/src/useStoreDebug.tsx +1 -1
  50. package/types/comparators.d.ts +6 -0
  51. package/types/comparators.d.ts.map +1 -0
  52. package/types/configureUseStore.d.ts +4 -0
  53. package/types/configureUseStore.d.ts.map +1 -0
  54. package/types/constants.d.ts +6 -0
  55. package/types/constants.d.ts.map +1 -0
  56. package/types/decorators.d.ts +3 -0
  57. package/types/decorators.d.ts.map +1 -0
  58. package/types/helpers.d.ts +11 -0
  59. package/types/helpers.d.ts.map +1 -0
  60. package/types/index.d.ts +12 -0
  61. package/types/index.d.ts.map +1 -0
  62. package/types/interfaces.d.ts +43 -0
  63. package/types/interfaces.d.ts.map +1 -0
  64. package/types/observe.d.ts +6 -0
  65. package/types/observe.d.ts.map +1 -0
  66. package/types/useStore.d.ts +26 -0
  67. package/types/useStore.d.ts.map +1 -0
  68. package/types/useStoreDebug.d.ts +7 -0
  69. package/types/useStoreDebug.d.ts.map +1 -0
  70. package/dist/cjs/comparators.cjs +0 -41
  71. package/dist/cjs/comparators.native.js +0 -50
  72. package/dist/cjs/comparators.native.js.map +0 -1
  73. package/dist/cjs/configureUseStore.cjs +0 -32
  74. package/dist/cjs/configureUseStore.native.js +0 -35
  75. package/dist/cjs/configureUseStore.native.js.map +0 -1
  76. package/dist/cjs/constants.cjs +0 -33
  77. package/dist/cjs/constants.native.js +0 -36
  78. package/dist/cjs/constants.native.js.map +0 -1
  79. package/dist/cjs/decorators.cjs +0 -33
  80. package/dist/cjs/decorators.native.js +0 -36
  81. package/dist/cjs/decorators.native.js.map +0 -1
  82. package/dist/cjs/helpers.cjs +0 -62
  83. package/dist/cjs/helpers.native.js +0 -71
  84. package/dist/cjs/helpers.native.js.map +0 -1
  85. package/dist/cjs/index.cjs +0 -43
  86. package/dist/cjs/index.native.js +0 -65
  87. package/dist/cjs/index.native.js.map +0 -1
  88. package/dist/cjs/interfaces.cjs +0 -18
  89. package/dist/cjs/interfaces.native.js +0 -21
  90. package/dist/cjs/interfaces.native.js.map +0 -1
  91. package/dist/cjs/observe.cjs +0 -166
  92. package/dist/cjs/observe.native.js +0 -234
  93. package/dist/cjs/observe.native.js.map +0 -1
  94. package/dist/cjs/useStore.cjs +0 -467
  95. package/dist/cjs/useStore.native.js +0 -608
  96. package/dist/cjs/useStore.native.js.map +0 -1
  97. package/dist/cjs/useStoreDebug.cjs +0 -67
  98. package/dist/cjs/useStoreDebug.native.js +0 -71
  99. package/dist/cjs/useStoreDebug.native.js.map +0 -1
  100. package/dist/esm/comparators.mjs +0 -16
  101. package/dist/esm/comparators.mjs.map +0 -1
  102. package/dist/esm/comparators.native.js +0 -22
  103. package/dist/esm/comparators.native.js.map +0 -1
  104. package/dist/esm/configureUseStore.mjs +0 -6
  105. package/dist/esm/configureUseStore.mjs.map +0 -1
  106. package/dist/esm/configureUseStore.native.js +0 -6
  107. package/dist/esm/configureUseStore.native.js.map +0 -1
  108. package/dist/esm/constants.mjs +0 -7
  109. package/dist/esm/constants.mjs.map +0 -1
  110. package/dist/esm/constants.native.js +0 -7
  111. package/dist/esm/constants.native.js.map +0 -1
  112. package/dist/esm/decorators.mjs +0 -8
  113. package/dist/esm/decorators.mjs.map +0 -1
  114. package/dist/esm/decorators.native.js +0 -8
  115. package/dist/esm/decorators.native.js.map +0 -1
  116. package/dist/esm/helpers.mjs +0 -31
  117. package/dist/esm/helpers.mjs.map +0 -1
  118. package/dist/esm/helpers.native.js +0 -37
  119. package/dist/esm/helpers.native.js.map +0 -1
  120. package/dist/esm/index.mjs +0 -15
  121. package/dist/esm/index.mjs.map +0 -1
  122. package/dist/esm/index.native.js +0 -34
  123. package/dist/esm/index.native.js.map +0 -1
  124. package/dist/esm/interfaces.mjs +0 -2
  125. package/dist/esm/interfaces.mjs.map +0 -1
  126. package/dist/esm/interfaces.native.js +0 -2
  127. package/dist/esm/interfaces.native.js.map +0 -1
  128. package/dist/esm/observe.mjs +0 -129
  129. package/dist/esm/observe.mjs.map +0 -1
  130. package/dist/esm/observe.native.js +0 -194
  131. package/dist/esm/observe.native.js.map +0 -1
  132. package/dist/esm/useStore.mjs +0 -415
  133. package/dist/esm/useStore.mjs.map +0 -1
  134. package/dist/esm/useStore.native.js +0 -553
  135. package/dist/esm/useStore.native.js.map +0 -1
  136. package/dist/esm/useStoreDebug.mjs +0 -27
  137. package/dist/esm/useStoreDebug.mjs.map +0 -1
  138. package/dist/esm/useStoreDebug.native.js +0 -28
  139. package/dist/esm/useStoreDebug.native.js.map +0 -1
@@ -0,0 +1,5 @@
1
+ export let configureOpts = {};
2
+ export function configureUseStore(opts) {
3
+ configureOpts = opts;
4
+ }
5
+ //# sourceMappingURL=configureUseStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configureUseStore.js","sourceRoot":"","sources":["../../src/configureUseStore.tsx"],"names":[],"mappings":"AAEA,MAAM,CAAC,IAAI,aAAa,GAAmB,EAAE,CAAA;AAE7C,MAAM,UAAU,iBAAiB,CAAC,IAAoB;IACpD,aAAa,GAAG,IAAI,CAAA;AACtB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export const UNWRAP_PROXY = Symbol();
2
+ export const defaultOptions = {
3
+ once: false,
4
+ selector: undefined,
5
+ };
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.tsx"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,EAAE,CAAA;AAEpC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,KAAK;IACX,QAAQ,EAAE,SAAS;CACpB,CAAA"}
@@ -0,0 +1,7 @@
1
+ export function compare(comparator) {
2
+ return (target, propertyKey) => {
3
+ target['_comparators'] = target['_comparators'] || {};
4
+ target['_comparators'][propertyKey] = comparator;
5
+ };
6
+ }
7
+ //# sourceMappingURL=decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/decorators.tsx"],"names":[],"mappings":"AAEA,MAAM,UAAU,OAAO,CAAC,UAAwB;IAC9C,OAAO,CAAC,MAAW,EAAE,WAAmB,EAAO,EAAE;QAC/C,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;QACrD,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,GAAG,UAAU,CAAA;IAClD,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { simpleHash } from '@hanzogui/simple-hash';
2
+ export function getStoreUid(Constructor, props) {
3
+ return simpleHash(`${Constructor}${!props ? '' : typeof props === 'string' ? props : JSON.stringify(props)}`, 'strict');
4
+ }
5
+ export const UNWRAP_STORE_INFO = Symbol('UNWRAP_STORE_INFO');
6
+ export const cache = new Map();
7
+ export function getStoreDescriptors(storeInstance) {
8
+ const proto = Object.getPrototypeOf(storeInstance);
9
+ const instanceDescriptors = Object.getOwnPropertyDescriptors(storeInstance);
10
+ const protoDescriptors = Object.getOwnPropertyDescriptors(proto);
11
+ const descriptors = {
12
+ ...protoDescriptors,
13
+ ...instanceDescriptors,
14
+ };
15
+ // @ts-ignore
16
+ delete descriptors.constructor;
17
+ return descriptors;
18
+ }
19
+ export function get(_, b) {
20
+ return _;
21
+ }
22
+ export function simpleStr(arg) {
23
+ if (process.env.NODE_ENV === 'development') {
24
+ return typeof arg === 'function'
25
+ ? 'fn'
26
+ : typeof arg === 'string'
27
+ ? `"${arg}"`
28
+ : !arg
29
+ ? arg
30
+ : typeof arg !== 'object'
31
+ ? arg
32
+ : Array.isArray(arg)
33
+ ? '[...]'
34
+ : `{...}`;
35
+ }
36
+ return arg;
37
+ }
38
+ // helper for debugging
39
+ export function getStoreDebugInfo(store) {
40
+ return (store[UNWRAP_STORE_INFO] ?? cache.get(getStoreUid(store.constructor, store.props)));
41
+ }
42
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAIlD,MAAM,UAAU,WAAW,CAAC,WAAgB,EAAE,KAA6B;IACzE,OAAO,UAAU,CACf,GAAG,WAAW,GACZ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CACxE,EAAE,EACF,QAAQ,CACT,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAC5D,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAqB,CAAA;AAEjD,MAAM,UAAU,mBAAmB,CAAC,aAAkB;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,CAAA;IAClD,MAAM,mBAAmB,GAAG,MAAM,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAA;IAC3E,MAAM,gBAAgB,GAAG,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAA;IAChE,MAAM,WAAW,GAAG;QAClB,GAAG,gBAAgB;QACnB,GAAG,mBAAmB;KACvB,CAAA;IACD,aAAa;IACb,OAAO,WAAW,CAAC,WAAW,CAAA;IAC9B,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,GAAG,CAAI,CAAI,EAAE,CAAO;IAClC,OAAO,CAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAQ;IAChC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC3C,OAAO,OAAO,GAAG,KAAK,UAAU;YAC9B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ;gBACvB,CAAC,CAAC,IAAI,GAAG,GAAG;gBACZ,CAAC,CAAC,CAAC,GAAG;oBACJ,CAAC,CAAC,GAAG;oBACL,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ;wBACvB,CAAC,CAAC,GAAG;wBACL,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;4BAClB,CAAC,CAAC,OAAO;4BACT,CAAC,CAAC,OAAO,CAAA;IACrB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AACD,uBAAuB;AAEvB,MAAM,UAAU,iBAAiB,CAAC,KAAU;IAC1C,OAAO,CACL,KAAK,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CACnF,CAAA;AACH,CAAC"}
package/dist/esm/index.js CHANGED
@@ -1,15 +1,14 @@
1
- export * from "./useStore.mjs";
2
- import { configureUseStore } from "./configureUseStore.mjs";
3
- export * from "./interfaces.mjs";
4
- export * from "./observe.mjs";
5
- import { UNWRAP_PROXY } from "./constants.mjs";
6
- export * from "./comparators.mjs";
7
- export * from "./decorators.mjs";
8
- class Store {
9
- constructor(props) {
10
- this.props = props;
11
- }
12
- props;
1
+ export * from './useStore.js';
2
+ export { configureUseStore } from './configureUseStore.js';
3
+ export * from './interfaces.js';
4
+ export * from './observe.js';
5
+ export { UNWRAP_PROXY } from './constants.js';
6
+ export * from './comparators.js';
7
+ export * from './decorators.js';
8
+ // to extend for prop types
9
+ export class Store {
10
+ constructor(props) {
11
+ this.props = props;
12
+ }
13
13
  }
14
- export { Store, UNWRAP_PROXY, configureUseStore };
15
- //# sourceMappingURL=index.js.map
14
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["configureUseStore","UNWRAP_PROXY","Store","constructor","props"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,SAASA,iBAAA,QAAyB;AAClC,cAAc;AACd,cAAc;AACd,SAASC,YAAA,QAAoB;AAC7B,cAAc;AACd,cAAc;AAGP,MAAMC,KAAA,CAAyC;EACpDC,YAAmBC,KAAA,EAAc;IAAd,KAAAA,KAAA,GAAAA,KAAA;EAAe;EAAfA,KAAA;AACrB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAgB,CAAA;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAA;AAC3D,cAAc,iBAAkB,CAAA;AAChC,cAAc,cAAe,CAAA;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAiB,CAAA;AAC9C,cAAc,kBAAmB,CAAA;AACjC,cAAc,iBAAkB,CAAA;AAEhC,2BAA2B;AAC3B,MAAM,OAAO,KAAK;IAChB,YAAmB,KAAY;qBAAZ,KAAK;IAAU,CAAC;CACpC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,136 @@
1
+ import React from 'react';
2
+ import { isEqualSubsetShallow } from './comparators.js';
3
+ import { UNWRAP_PROXY } from './constants.js';
4
+ import { trackStoresAccess } from './useStore.js';
5
+ const logUpdate = process.env.NODE_ENV === 'development'
6
+ ? (fn, stores, last, next) => {
7
+ const getStoreLogName = (store) => {
8
+ const str = store[UNWRAP_PROXY] ?? store;
9
+ return `${str.constructor.name}${store.props?.id ? `:${store.props.id}` : ''}`;
10
+ };
11
+ const storeNames = stores.map(getStoreLogName).join(', ');
12
+ const name = `🌑 ▶️ %c${fn.name} ${storeNames} () ${last} => ${next}`;
13
+ console.groupCollapsed(name, 'color: tomato;');
14
+ console.groupCollapsed('trace >');
15
+ console.trace();
16
+ console.groupEnd();
17
+ console.info(' next', next);
18
+ console.groupEnd();
19
+ }
20
+ : null;
21
+ export function observe(fn) {
22
+ let prev = getObserverValueAndStoresAccessed(fn);
23
+ let disposeValue = null;
24
+ const subscribe = () => {
25
+ const stores = [...prev.storeInfos];
26
+ return subscribeToStores(stores, () => {
27
+ disposeValue?.();
28
+ const next = getObserverValueAndStoresAccessed(fn);
29
+ if (typeof next.value === 'function') {
30
+ disposeValue = next.value;
31
+ if (process.env.NODE_ENV === 'development') {
32
+ logUpdate(fn, [...next.storeInfos], '(fn)', '(fn)');
33
+ }
34
+ return;
35
+ }
36
+ if (isEqualSubsetShallow(prev.storeInfos, next.storeInfos) &&
37
+ isEqualSubsetShallow(prev.value, next.value)) {
38
+ return;
39
+ }
40
+ if (process.env.NODE_ENV === 'development') {
41
+ logUpdate(fn, [...next.storeInfos], prev.value, next.value);
42
+ }
43
+ prev = next;
44
+ dispose();
45
+ dispose = subscribe();
46
+ });
47
+ };
48
+ let dispose = subscribe();
49
+ return {
50
+ dispose: () => {
51
+ dispose();
52
+ disposeValue?.();
53
+ },
54
+ getValue: () => prev.value,
55
+ };
56
+ }
57
+ export function useObserve(fn) {
58
+ const [state, setState] = React.useState(() => {
59
+ return getObserverValueAndStoresAccessed(fn);
60
+ });
61
+ React.useEffect(() => {
62
+ let dispose;
63
+ const unsub = subscribeToStores([...state.storeInfos], () => {
64
+ dispose?.();
65
+ const next = getObserverValueAndStoresAccessed(fn);
66
+ const nextStoreInfos = [...next.storeInfos];
67
+ const prevStoreInfos = [...state.storeInfos];
68
+ // return function === return disposable
69
+ if (typeof next.value === 'function') {
70
+ if (process.env.NODE_ENV === 'development') {
71
+ logUpdate(fn, nextStoreInfos, '(fn)', '(fn)');
72
+ }
73
+ dispose = next.value;
74
+ return;
75
+ }
76
+ setState((prev) => {
77
+ if (isEqualSubsetShallow(prevStoreInfos, nextStoreInfos) &&
78
+ isEqualSubsetShallow(prev.value, next.value)) {
79
+ return prev;
80
+ }
81
+ if (process.env.NODE_ENV === 'development') {
82
+ logUpdate(fn, nextStoreInfos, prev.value, next.value);
83
+ }
84
+ return next;
85
+ });
86
+ });
87
+ return () => {
88
+ unsub();
89
+ dispose?.();
90
+ };
91
+ }, [[...state.storeInfos].map((i) => i.uid).join(',')]);
92
+ return state.value;
93
+ }
94
+ function getObserverValueAndStoresAccessed(selector) {
95
+ const storeInfos = new Set();
96
+ const dispose = trackStoresAccess((storeInfo) => {
97
+ storeInfos.add(storeInfo);
98
+ });
99
+ const value = selector();
100
+ dispose();
101
+ return {
102
+ value,
103
+ storeInfos,
104
+ };
105
+ }
106
+ function subscribeToStores(storeInfos, onUpdate) {
107
+ const disposes = [];
108
+ // wrap onUpdate to avoid waterfall calls + avoid tracking during onUpdate
109
+ let isUpdating = false;
110
+ const onUpdateDebouncedWithoutTracking = () => {
111
+ if (isUpdating)
112
+ return;
113
+ isUpdating = true;
114
+ queueMicrotask(() => {
115
+ try {
116
+ for (const storeInfo of storeInfos) {
117
+ storeInfo.disableTracking = true;
118
+ }
119
+ onUpdate();
120
+ }
121
+ finally {
122
+ isUpdating = false;
123
+ for (const storeInfo of storeInfos) {
124
+ storeInfo.disableTracking = false;
125
+ }
126
+ }
127
+ });
128
+ };
129
+ for (const storeInfo of storeInfos) {
130
+ disposes.push(storeInfo.subscribe(onUpdateDebouncedWithoutTracking));
131
+ }
132
+ return () => {
133
+ disposes.forEach((x) => x());
134
+ };
135
+ }
136
+ //# sourceMappingURL=observe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observe.js","sourceRoot":"","sources":["../../src/observe.tsx"],"names":[],"mappings":"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"}