@tamagui/use-store 2.0.0-rc.8 → 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.
- package/dist/cjs/comparators.cjs +18 -14
- package/dist/cjs/comparators.native.js +21 -17
- package/dist/cjs/comparators.native.js.map +1 -1
- package/dist/cjs/configureUseStore.cjs +12 -10
- package/dist/cjs/configureUseStore.native.js +12 -10
- package/dist/cjs/configureUseStore.native.js.map +1 -1
- package/dist/cjs/constants.cjs +17 -15
- package/dist/cjs/constants.native.js +17 -15
- package/dist/cjs/constants.native.js.map +1 -1
- package/dist/cjs/decorators.cjs +14 -11
- package/dist/cjs/decorators.native.js +14 -11
- package/dist/cjs/decorators.native.js.map +1 -1
- package/dist/cjs/helpers.cjs +28 -21
- package/dist/cjs/helpers.native.js +29 -23
- package/dist/cjs/helpers.native.js.map +1 -1
- package/dist/cjs/index.cjs +13 -11
- package/dist/cjs/index.native.js +30 -19
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/interfaces.cjs +7 -5
- package/dist/cjs/interfaces.native.js +7 -5
- package/dist/cjs/interfaces.native.js.map +1 -1
- package/dist/cjs/observe.cjs +105 -59
- package/dist/cjs/observe.native.js +159 -111
- package/dist/cjs/observe.native.js.map +1 -1
- package/dist/cjs/useStore.cjs +271 -194
- package/dist/cjs/useStore.native.js +438 -374
- package/dist/cjs/useStore.native.js.map +1 -1
- package/dist/cjs/useStoreDebug.cjs +42 -31
- package/dist/cjs/useStoreDebug.native.js +42 -36
- package/dist/cjs/useStoreDebug.native.js.map +1 -1
- package/dist/esm/comparators.mjs +6 -4
- package/dist/esm/comparators.mjs.map +1 -1
- package/dist/esm/comparators.native.js +9 -7
- package/dist/esm/comparators.native.js.map +1 -1
- package/dist/esm/constants.mjs +5 -5
- package/dist/esm/constants.mjs.map +1 -1
- package/dist/esm/constants.native.js +5 -5
- package/dist/esm/constants.native.js.map +1 -1
- package/dist/esm/decorators.mjs +2 -1
- package/dist/esm/decorators.mjs.map +1 -1
- package/dist/esm/decorators.native.js +2 -1
- package/dist/esm/decorators.native.js.map +1 -1
- package/dist/esm/helpers.mjs +16 -11
- package/dist/esm/helpers.mjs.map +1 -1
- package/dist/esm/helpers.native.js +17 -13
- package/dist/esm/helpers.native.js.map +1 -1
- package/dist/esm/index.js +8 -12
- package/dist/esm/index.js.map +1 -6
- package/dist/esm/index.native.js +17 -8
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/observe.mjs +77 -33
- package/dist/esm/observe.mjs.map +1 -1
- package/dist/esm/observe.native.js +128 -82
- package/dist/esm/observe.native.js.map +1 -1
- package/dist/esm/useStore.mjs +241 -166
- package/dist/esm/useStore.mjs.map +1 -1
- package/dist/esm/useStore.native.js +408 -346
- package/dist/esm/useStore.native.js.map +1 -1
- package/dist/esm/useStoreDebug.mjs +18 -9
- package/dist/esm/useStoreDebug.mjs.map +1 -1
- package/dist/esm/useStoreDebug.native.js +14 -10
- package/dist/esm/useStoreDebug.native.js.map +1 -1
- package/package.json +6 -9
- package/dist/cjs/comparators.js +0 -33
- package/dist/cjs/comparators.js.map +0 -6
- package/dist/cjs/configureUseStore.js +0 -25
- package/dist/cjs/configureUseStore.js.map +0 -6
- package/dist/cjs/constants.js +0 -25
- package/dist/cjs/constants.js.map +0 -6
- package/dist/cjs/decorators.js +0 -25
- package/dist/cjs/decorators.js.map +0 -6
- package/dist/cjs/helpers.js +0 -50
- package/dist/cjs/helpers.js.map +0 -6
- package/dist/cjs/index.js +0 -34
- package/dist/cjs/index.js.map +0 -6
- package/dist/cjs/interfaces.js +0 -14
- package/dist/cjs/interfaces.js.map +0 -6
- package/dist/cjs/observe.js +0 -105
- package/dist/cjs/observe.js.map +0 -6
- package/dist/cjs/useStore.js +0 -353
- package/dist/cjs/useStore.js.map +0 -6
- package/dist/cjs/useStoreDebug.js +0 -46
- package/dist/cjs/useStoreDebug.js.map +0 -6
- package/dist/esm/comparators.js +0 -17
- package/dist/esm/comparators.js.map +0 -6
- package/dist/esm/configureUseStore.js +0 -9
- package/dist/esm/configureUseStore.js.map +0 -6
- package/dist/esm/constants.js +0 -9
- package/dist/esm/constants.js.map +0 -6
- package/dist/esm/decorators.js +0 -9
- package/dist/esm/decorators.js.map +0 -6
- package/dist/esm/helpers.js +0 -34
- package/dist/esm/helpers.js.map +0 -6
- package/dist/esm/interfaces.js +0 -1
- package/dist/esm/interfaces.js.map +0 -6
- package/dist/esm/observe.js +0 -84
- package/dist/esm/observe.js.map +0 -6
- package/dist/esm/useStore.js +0 -340
- package/dist/esm/useStore.js.map +0 -6
- package/dist/esm/useStoreDebug.js +0 -22
- package/dist/esm/useStoreDebug.js.map +0 -6
|
@@ -5,19 +5,18 @@ import { UNWRAP_PROXY, defaultOptions } from "./constants.native.js";
|
|
|
5
5
|
import { UNWRAP_STORE_INFO, cache, getStoreDescriptors, getStoreUid, simpleStr } from "./helpers.native.js";
|
|
6
6
|
import { DebugStores, shouldDebug, useCurrentComponent } from "./useStoreDebug.native.js";
|
|
7
7
|
function _instanceof(left, right) {
|
|
8
|
-
|
|
8
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) return !!right[Symbol.hasInstance](left);else return left instanceof right;
|
|
9
9
|
}
|
|
10
10
|
var idFn = function (_) {
|
|
11
11
|
return _;
|
|
12
12
|
};
|
|
13
13
|
function useStore(StoreKlass, props) {
|
|
14
|
-
var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : defaultOptions
|
|
15
|
-
|
|
16
|
-
return useStoreFromInfo(info, options.selector, options);
|
|
14
|
+
var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : defaultOptions;
|
|
15
|
+
return useStoreFromInfo(getOrCreateStoreInfo(StoreKlass, props, options), options.selector, options);
|
|
17
16
|
}
|
|
18
17
|
function useStoreDebug(StoreKlass, props) {
|
|
19
18
|
return useStore(StoreKlass, props, {
|
|
20
|
-
debug:
|
|
19
|
+
debug: true
|
|
21
20
|
});
|
|
22
21
|
}
|
|
23
22
|
function createStore(StoreKlass, props, options) {
|
|
@@ -25,19 +24,19 @@ function createStore(StoreKlass, props, options) {
|
|
|
25
24
|
return (_getOrCreateStoreInfo = getOrCreateStoreInfo(StoreKlass, props, options)) === null || _getOrCreateStoreInfo === void 0 ? void 0 : _getOrCreateStoreInfo.store;
|
|
26
25
|
}
|
|
27
26
|
function useGlobalStore(instance, debug) {
|
|
28
|
-
var store = instance[UNWRAP_PROXY]
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (!info) throw new Error(
|
|
27
|
+
var store = instance[UNWRAP_PROXY];
|
|
28
|
+
var uid = getStoreUid(store.constructor, store.props);
|
|
29
|
+
var info = cache.get(uid);
|
|
30
|
+
if (!info) throw new Error(`This store not created using createStore()`);
|
|
32
31
|
return useStoreFromInfo(info, void 0, {
|
|
33
32
|
debug
|
|
34
33
|
});
|
|
35
34
|
}
|
|
36
35
|
function useGlobalStoreSelector(instance, selector, debug) {
|
|
37
|
-
var store = instance[UNWRAP_PROXY]
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (!info) throw new Error(
|
|
36
|
+
var store = instance[UNWRAP_PROXY];
|
|
37
|
+
var uid = getStoreUid(store.constructor, store.props);
|
|
38
|
+
var info = cache.get(uid);
|
|
39
|
+
if (!info) throw new Error(`This store not created using createStore()`);
|
|
41
40
|
return useStoreFromInfo(info, selector, {
|
|
42
41
|
debug
|
|
43
42
|
});
|
|
@@ -61,7 +60,8 @@ function useStoreSelector(StoreKlass, selector, props) {
|
|
|
61
60
|
}
|
|
62
61
|
var storeAccessTrackers = /* @__PURE__ */new Set();
|
|
63
62
|
function trackStoresAccess(cb) {
|
|
64
|
-
|
|
63
|
+
storeAccessTrackers.add(cb);
|
|
64
|
+
return function () {
|
|
65
65
|
storeAccessTrackers.delete(cb);
|
|
66
66
|
};
|
|
67
67
|
}
|
|
@@ -72,420 +72,482 @@ function getStore(StoreKlass, props) {
|
|
|
72
72
|
function getOrCreateStore(StoreKlass, props) {
|
|
73
73
|
var _getOrCreateStoreInfo;
|
|
74
74
|
return (_getOrCreateStoreInfo = getOrCreateStoreInfo(StoreKlass, props, {
|
|
75
|
-
refuseCreation:
|
|
75
|
+
refuseCreation: false
|
|
76
76
|
})) === null || _getOrCreateStoreInfo === void 0 ? void 0 : _getOrCreateStoreInfo.store;
|
|
77
77
|
}
|
|
78
78
|
function getStoreInfo(StoreKlass, props) {
|
|
79
79
|
return getOrCreateStoreInfo(StoreKlass, props, {
|
|
80
|
-
refuseCreation:
|
|
80
|
+
refuseCreation: true
|
|
81
81
|
});
|
|
82
82
|
}
|
|
83
83
|
var onCreateListeners = /* @__PURE__ */new Set();
|
|
84
84
|
function onCreateStore(cb) {
|
|
85
|
-
|
|
85
|
+
onCreateListeners.add(cb);
|
|
86
|
+
return function () {
|
|
86
87
|
onCreateListeners.delete(cb);
|
|
87
88
|
};
|
|
88
89
|
}
|
|
89
90
|
function getOrCreateStoreInfo(StoreKlass, props, options, propsKeyCalculated) {
|
|
90
91
|
var _store_mount;
|
|
91
92
|
if (!StoreKlass) return null;
|
|
92
|
-
var uid = getStoreUid(StoreKlass, propsKeyCalculated
|
|
93
|
-
if (!options
|
|
94
|
-
if (options
|
|
93
|
+
var uid = getStoreUid(StoreKlass, propsKeyCalculated !== null && propsKeyCalculated !== void 0 ? propsKeyCalculated : props);
|
|
94
|
+
if (!(options === null || options === void 0 ? void 0 : options.avoidCache) && cache.has(uid)) return cache.get(uid);
|
|
95
|
+
if (options === null || options === void 0 ? void 0 : options.refuseCreation) throw new Error(`No store exists (${StoreKlass.name}) with props: ${props}`);
|
|
95
96
|
var storeInstance = new StoreKlass(props);
|
|
96
97
|
storeInstance.props = props;
|
|
97
|
-
var getters = {}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
var getters = {};
|
|
99
|
+
var actions = {};
|
|
100
|
+
var stateKeys = /* @__PURE__ */new Set();
|
|
101
|
+
var descriptors = getStoreDescriptors(storeInstance);
|
|
101
102
|
for (var key in descriptors) {
|
|
102
103
|
var descriptor = descriptors[key];
|
|
103
|
-
typeof descriptor.value
|
|
104
|
+
if (typeof descriptor.value === "function") actions[key] = descriptor.value;else if (typeof descriptor.get === "function") getters[key] = descriptor.get;else if (key !== "props" && key[0] !== "_") stateKeys.add(key);
|
|
104
105
|
}
|
|
105
|
-
var keyComparators = storeInstance
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
106
|
+
var keyComparators = storeInstance["_comparators"];
|
|
107
|
+
var listeners = /* @__PURE__ */new Set();
|
|
108
|
+
var storeInfo = {
|
|
109
|
+
uid,
|
|
110
|
+
keyComparators,
|
|
111
|
+
storeInstance,
|
|
112
|
+
getters,
|
|
113
|
+
stateKeys,
|
|
114
|
+
props,
|
|
115
|
+
actions,
|
|
116
|
+
debug: options === null || options === void 0 ? void 0 : options.debug,
|
|
117
|
+
disableTracking: false,
|
|
118
|
+
gettersState: {
|
|
119
|
+
getCache: /* @__PURE__ */new Map(),
|
|
120
|
+
depsToGetter: /* @__PURE__ */new Map(),
|
|
121
|
+
curGetKeys: /* @__PURE__ */new Set(),
|
|
122
|
+
isGetting: false
|
|
123
|
+
},
|
|
124
|
+
listeners,
|
|
125
|
+
trackers: /* @__PURE__ */new Set(),
|
|
126
|
+
version: 0,
|
|
127
|
+
subscribe: function (onChanged) {
|
|
128
|
+
listeners.add(onChanged);
|
|
129
|
+
return function () {
|
|
130
|
+
listeners.delete(onChanged);
|
|
131
|
+
};
|
|
132
|
+
},
|
|
133
|
+
triggerUpdate: function () {
|
|
134
|
+
storeInfo.version = (storeInfo.version + 1) % Number.MAX_SAFE_INTEGER;
|
|
135
|
+
var _iteratorNormalCompletion = true,
|
|
136
|
+
_didIteratorError = false,
|
|
137
|
+
_iteratorError = void 0;
|
|
138
|
+
try {
|
|
139
|
+
for (var _iterator = listeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
140
|
+
var cb = _step.value;
|
|
141
|
+
cb();
|
|
142
|
+
}
|
|
143
|
+
} catch (err) {
|
|
144
|
+
_didIteratorError = true;
|
|
145
|
+
_iteratorError = err;
|
|
146
|
+
} finally {
|
|
136
147
|
try {
|
|
137
|
-
|
|
138
|
-
var cb = _step.value;
|
|
139
|
-
cb();
|
|
140
|
-
}
|
|
141
|
-
} catch (err) {
|
|
142
|
-
_didIteratorError = !0, _iteratorError = err;
|
|
148
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) _iterator.return();
|
|
143
149
|
} finally {
|
|
144
|
-
|
|
145
|
-
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
146
|
-
} finally {
|
|
147
|
-
if (_didIteratorError) throw _iteratorError;
|
|
148
|
-
}
|
|
150
|
+
if (_didIteratorError) throw _iteratorError;
|
|
149
151
|
}
|
|
150
152
|
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
var store = createProxiedStore(
|
|
156
|
+
// we assign store right after and proxiedStore never accesses it until later on
|
|
157
|
+
storeInfo);
|
|
158
|
+
if (process.env.NODE_ENV === "development") allStores[StoreKlass.name + uid] = store;
|
|
159
|
+
(_store_mount = store.mount) === null || _store_mount === void 0 || _store_mount.call(store);
|
|
160
|
+
storeInfo.store = store;
|
|
156
161
|
var result = storeInfo;
|
|
157
|
-
|
|
162
|
+
cache.set(uid, result);
|
|
163
|
+
onCreateListeners.forEach(function (cb) {
|
|
158
164
|
return cb(result);
|
|
159
|
-
})
|
|
165
|
+
});
|
|
166
|
+
return result;
|
|
160
167
|
}
|
|
161
168
|
var allStores = {};
|
|
162
169
|
if (process.env.NODE_ENV === "development") {
|
|
163
170
|
var _globalThis, _Store;
|
|
164
171
|
(_globalThis = globalThis)[_Store = "Store"] || (_globalThis[_Store] = allStores);
|
|
165
172
|
}
|
|
166
|
-
var emptyObj = {}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
+
var emptyObj = {};
|
|
174
|
+
var selectKeys = function (obj, keys) {
|
|
175
|
+
if (!keys.length) return emptyObj;
|
|
176
|
+
var res = {};
|
|
177
|
+
var _iteratorNormalCompletion = true,
|
|
178
|
+
_didIteratorError = false,
|
|
179
|
+
_iteratorError = void 0;
|
|
180
|
+
try {
|
|
181
|
+
for (var _iterator = keys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
182
|
+
var key = _step.value;
|
|
183
|
+
res[key] = obj[key];
|
|
184
|
+
}
|
|
185
|
+
} catch (err) {
|
|
186
|
+
_didIteratorError = true;
|
|
187
|
+
_iteratorError = err;
|
|
188
|
+
} finally {
|
|
173
189
|
try {
|
|
174
|
-
|
|
175
|
-
var key = _step.value;
|
|
176
|
-
res[key] = obj[key];
|
|
177
|
-
}
|
|
178
|
-
} catch (err) {
|
|
179
|
-
_didIteratorError = !0, _iteratorError = err;
|
|
190
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) _iterator.return();
|
|
180
191
|
} finally {
|
|
181
|
-
|
|
182
|
-
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
183
|
-
} finally {
|
|
184
|
-
if (_didIteratorError) throw _iteratorError;
|
|
185
|
-
}
|
|
192
|
+
if (_didIteratorError) throw _iteratorError;
|
|
186
193
|
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
194
|
+
}
|
|
195
|
+
return res;
|
|
196
|
+
};
|
|
197
|
+
var isInReaction = false;
|
|
198
|
+
var setIsInReaction = function (val) {
|
|
199
|
+
isInReaction = val;
|
|
200
|
+
};
|
|
193
201
|
function useStoreFromInfo(info, userSelector, options) {
|
|
194
|
-
var store = info
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
internal.current
|
|
202
|
+
var store = info === null || info === void 0 ? void 0 : info.store;
|
|
203
|
+
var internal = React.useRef(void 0);
|
|
204
|
+
var component = useCurrentComponent();
|
|
205
|
+
if (!internal.current) internal.current = {
|
|
198
206
|
component,
|
|
199
207
|
tracked: /* @__PURE__ */new Set(),
|
|
200
208
|
last: null,
|
|
201
209
|
lastKeys: null
|
|
202
|
-
}
|
|
203
|
-
var curInternal = internal.current
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
210
|
+
};
|
|
211
|
+
var curInternal = internal.current;
|
|
212
|
+
var shouldPrintDebug = options === null || options === void 0 ? void 0 : options.debug;
|
|
213
|
+
var getSnapshot = React.useCallback(function () {
|
|
214
|
+
if (!info || !store) return;
|
|
215
|
+
var curInternal2 = internal.current;
|
|
216
|
+
var isTracking = curInternal2.tracked.size;
|
|
217
|
+
var keys = [...(!isTracking ? info.stateKeys : curInternal2.tracked)];
|
|
218
|
+
var nextKeys = `${info.version}${keys.join("")}${userSelector || ""}`;
|
|
219
|
+
var lastKeys = curInternal2.lastKeys;
|
|
220
|
+
if (nextKeys === curInternal2.lastKeys) return curInternal2.last;
|
|
221
|
+
curInternal2.lastKeys = nextKeys;
|
|
222
|
+
var snap;
|
|
223
|
+
info.disableTracking = true;
|
|
224
|
+
var last = curInternal2.last;
|
|
225
|
+
if (userSelector) snap = userSelector(store);else snap = selectKeys(store, keys);
|
|
226
|
+
info.disableTracking = false;
|
|
227
|
+
var isUnchanged = !userSelector && !isTracking && last || typeof last !== "undefined" && isEqualSubsetShallow(last, snap, {
|
|
228
|
+
keyComparators: info.keyComparators
|
|
229
|
+
});
|
|
230
|
+
if (shouldPrintDebug) console.info("🌑 getSnapshot", {
|
|
231
|
+
storeState: selectKeys(store, Object.keys(store)),
|
|
232
|
+
userSelector,
|
|
233
|
+
info,
|
|
234
|
+
isUnchanged,
|
|
235
|
+
component,
|
|
236
|
+
keys,
|
|
237
|
+
last,
|
|
238
|
+
snap,
|
|
239
|
+
curInternal: curInternal2,
|
|
240
|
+
nextKeys,
|
|
241
|
+
lastKeys
|
|
242
|
+
});
|
|
243
|
+
if (isUnchanged) return last;
|
|
244
|
+
curInternal2.last = snap;
|
|
245
|
+
return snap;
|
|
246
|
+
}, [store]);
|
|
247
|
+
var state = React.useSyncExternalStore((info === null || info === void 0 ? void 0 : info.subscribe) || idFn, getSnapshot, getSnapshot);
|
|
248
|
+
if (!info || !store || !state) return state;
|
|
249
|
+
if (userSelector) return state;
|
|
250
|
+
return new Proxy(store, {
|
|
238
251
|
get(target, key) {
|
|
239
252
|
var curVal = Reflect.get(target, key);
|
|
240
253
|
if (isInReaction) return curVal;
|
|
241
254
|
var keyString = key;
|
|
242
|
-
|
|
255
|
+
if (info.stateKeys.has(keyString) || keyString in info.getters) {
|
|
256
|
+
if (shouldPrintDebug) console.info("👀 tracking", keyString);
|
|
257
|
+
curInternal.tracked.add(keyString);
|
|
258
|
+
}
|
|
259
|
+
if (Reflect.has(state, key)) return Reflect.get(state, key);
|
|
260
|
+
return curVal;
|
|
243
261
|
}
|
|
244
262
|
});
|
|
245
263
|
}
|
|
246
|
-
var setters = /* @__PURE__ */new Set()
|
|
247
|
-
|
|
264
|
+
var setters = /* @__PURE__ */new Set();
|
|
265
|
+
var logStack = /* @__PURE__ */new Set();
|
|
248
266
|
function createProxiedStore(storeInfo) {
|
|
249
267
|
var _loop = function (key2) {
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
268
|
+
if (key2 === "subscribe") return "continue";
|
|
269
|
+
var actionFn = actions[key2];
|
|
270
|
+
var isGetFn = key2.startsWith("get");
|
|
271
|
+
wrappedActions[key2] = function useStoreAction() {
|
|
272
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
|
|
273
|
+
var res;
|
|
274
|
+
if (isGetFn || gettersState.isGetting) return Reflect.apply(actionFn, proxiedStore, args);
|
|
275
|
+
if (process.env.NODE_ENV === "development" && shouldDebug2) console.info("(debug) startAction", key2);
|
|
276
|
+
res = Reflect.apply(actionFn, proxiedStore, args);
|
|
277
|
+
if (_instanceof(res, Promise)) return res.then(finishAction);
|
|
278
|
+
finishAction();
|
|
279
|
+
return res;
|
|
280
|
+
};
|
|
281
|
+
if (process.env.NODE_ENV === "development") {
|
|
282
|
+
let hashCode2 = function (str) {
|
|
283
|
+
var hash = 0;
|
|
284
|
+
for (var i = 0; i < str.length; i++) hash = str.charCodeAt(i) + ((hash << 5) - hash);
|
|
285
|
+
return hash;
|
|
286
|
+
},
|
|
287
|
+
strColor2 = function (str) {
|
|
288
|
+
return `hsl(${hashCode2(str) % 360}, 90%, 40%)`;
|
|
289
|
+
};
|
|
290
|
+
if (!key2.startsWith("get") && !key2.startsWith("_") && key2 !== "subscribe") {
|
|
291
|
+
var ogAction = wrappedActions[key2];
|
|
292
|
+
wrappedActions[key2] = new Proxy(ogAction, {
|
|
293
|
+
apply(target, thisArg, args) {
|
|
294
|
+
var isDebugging = shouldDebug2 || storeInfo.debug;
|
|
295
|
+
if (!(process.env.LOG_LEVEL !== "0" && (isDebugging || configureOpts.logLevel !== "error"))) return Reflect.apply(target, thisArg, args);
|
|
296
|
+
setters = /* @__PURE__ */new Set();
|
|
297
|
+
var curSetters = setters;
|
|
298
|
+
var isTopLevelLogger = logStack.size == 0;
|
|
299
|
+
var logs = /* @__PURE__ */new Set();
|
|
300
|
+
logStack.add(logs);
|
|
301
|
+
var res;
|
|
302
|
+
var id = counter++;
|
|
303
|
+
try {
|
|
304
|
+
res = Reflect.apply(target, thisArg, args);
|
|
305
|
+
} catch (err) {
|
|
306
|
+
console.error("Error", err);
|
|
307
|
+
throw err;
|
|
308
|
+
} finally {
|
|
309
|
+
logStack.add("end");
|
|
310
|
+
var name = constr.name;
|
|
311
|
+
var color = strColor2(name);
|
|
312
|
+
var simpleArgs = args.map(simpleStr);
|
|
313
|
+
logs.add([`%c \u{1F311} ${id} ${name.padStart(isTopLevelLogger ? 8 : 4)}%c.${key2}(${simpleArgs.join(", ")})${isTopLevelLogger && logStack.size > 1 ? ` (+${logStack.size - 1})` : ""}`, `color: ${color};`, "color: black;"]);
|
|
314
|
+
if (curSetters.size) curSetters.forEach(function (param) {
|
|
315
|
+
var {
|
|
316
|
+
key: key3,
|
|
317
|
+
value
|
|
318
|
+
} = param;
|
|
319
|
+
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") logs.add([` SET ${key3} ${value}`, value]);else logs.add([` SET ${key3}`, value]);
|
|
320
|
+
});
|
|
321
|
+
if (isTopLevelLogger) {
|
|
322
|
+
var error = null;
|
|
323
|
+
try {
|
|
324
|
+
var _iteratorNormalCompletion = true,
|
|
325
|
+
_didIteratorError = false,
|
|
326
|
+
_iteratorError = void 0;
|
|
298
327
|
try {
|
|
299
|
-
var _iteratorNormalCompletion =
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
328
|
+
for (var _iterator = logStack[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
329
|
+
var item = _step.value;
|
|
330
|
+
if (item === "end") {
|
|
331
|
+
console.groupEnd();
|
|
332
|
+
continue;
|
|
333
|
+
}
|
|
334
|
+
var [head, ...rest] = item;
|
|
335
|
+
if (head) {
|
|
336
|
+
console.groupCollapsed(...head);
|
|
337
|
+
console.groupCollapsed("...");
|
|
338
|
+
console.info("args", args);
|
|
339
|
+
console.info("response", res);
|
|
340
|
+
console.groupCollapsed("trace");
|
|
341
|
+
console.trace();
|
|
342
|
+
console.groupEnd();
|
|
343
|
+
console.groupEnd();
|
|
344
|
+
var _iteratorNormalCompletion1 = true,
|
|
345
|
+
_didIteratorError1 = false,
|
|
346
|
+
_iteratorError1 = void 0;
|
|
347
|
+
try {
|
|
348
|
+
for (var _iterator1 = rest[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
|
|
349
|
+
var [name1, ...log] = _step1.value;
|
|
350
|
+
console.groupCollapsed(name1);
|
|
351
|
+
console.info(...log);
|
|
352
|
+
console.groupEnd();
|
|
353
|
+
}
|
|
354
|
+
} catch (err) {
|
|
355
|
+
_didIteratorError1 = true;
|
|
356
|
+
_iteratorError1 = err;
|
|
357
|
+
} finally {
|
|
315
358
|
try {
|
|
316
|
-
|
|
317
|
-
var [name1, ...log] = _step1.value;
|
|
318
|
-
console.groupCollapsed(name1), console.info(...log), console.groupEnd();
|
|
319
|
-
}
|
|
320
|
-
} catch (err) {
|
|
321
|
-
_didIteratorError1 = !0, _iteratorError1 = err;
|
|
359
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) _iterator1.return();
|
|
322
360
|
} finally {
|
|
323
|
-
|
|
324
|
-
!_iteratorNormalCompletion1 && _iterator1.return != null && _iterator1.return();
|
|
325
|
-
} finally {
|
|
326
|
-
if (_didIteratorError1) throw _iteratorError1;
|
|
327
|
-
}
|
|
361
|
+
if (_didIteratorError1) throw _iteratorError1;
|
|
328
362
|
}
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
} catch (err) {
|
|
332
|
-
_didIteratorError = !0, _iteratorError = err;
|
|
333
|
-
} finally {
|
|
334
|
-
try {
|
|
335
|
-
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
336
|
-
} finally {
|
|
337
|
-
if (_didIteratorError) throw _iteratorError;
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
} catch (err) {
|
|
341
|
-
error = err;
|
|
342
|
-
}
|
|
343
|
-
var _iteratorNormalCompletion2 = !0,
|
|
344
|
-
_didIteratorError2 = !1,
|
|
345
|
-
_iteratorError2 = void 0;
|
|
346
|
-
try {
|
|
347
|
-
for (var _iterator2 = logStack[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = !0) {
|
|
348
|
-
var _ = _step2.value;
|
|
349
|
-
console.groupEnd();
|
|
363
|
+
}
|
|
364
|
+
} else console.info("Weird log", head, ...rest);
|
|
350
365
|
}
|
|
351
366
|
} catch (err) {
|
|
352
|
-
|
|
367
|
+
_didIteratorError = true;
|
|
368
|
+
_iteratorError = err;
|
|
353
369
|
} finally {
|
|
354
370
|
try {
|
|
355
|
-
!
|
|
371
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) _iterator.return();
|
|
356
372
|
} finally {
|
|
357
|
-
if (
|
|
373
|
+
if (_didIteratorError) throw _iteratorError;
|
|
358
374
|
}
|
|
359
375
|
}
|
|
360
|
-
|
|
376
|
+
} catch (err) {
|
|
377
|
+
error = err;
|
|
361
378
|
}
|
|
362
|
-
|
|
379
|
+
var _iteratorNormalCompletion2 = true,
|
|
380
|
+
_didIteratorError2 = false,
|
|
381
|
+
_iteratorError2 = void 0;
|
|
382
|
+
try {
|
|
383
|
+
for (var _iterator2 = logStack[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
|
|
384
|
+
_step2.value;
|
|
385
|
+
console.groupEnd();
|
|
386
|
+
}
|
|
387
|
+
} catch (err) {
|
|
388
|
+
_didIteratorError2 = true;
|
|
389
|
+
_iteratorError2 = err;
|
|
390
|
+
} finally {
|
|
391
|
+
try {
|
|
392
|
+
if (!_iteratorNormalCompletion2 && _iterator2.return != null) _iterator2.return();
|
|
393
|
+
} finally {
|
|
394
|
+
if (_didIteratorError2) throw _iteratorError2;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
if (error) console.error(`error loggin`, error);
|
|
398
|
+
logStack.clear();
|
|
363
399
|
}
|
|
400
|
+
return res;
|
|
364
401
|
}
|
|
365
|
-
}
|
|
366
|
-
}
|
|
402
|
+
}
|
|
403
|
+
});
|
|
367
404
|
}
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
405
|
+
}
|
|
406
|
+
};
|
|
407
|
+
var {
|
|
408
|
+
actions,
|
|
409
|
+
storeInstance,
|
|
410
|
+
getters,
|
|
411
|
+
gettersState
|
|
412
|
+
} = storeInfo;
|
|
413
|
+
var {
|
|
414
|
+
getCache,
|
|
415
|
+
curGetKeys,
|
|
416
|
+
depsToGetter
|
|
417
|
+
} = gettersState;
|
|
418
|
+
var constr = storeInstance.constructor;
|
|
419
|
+
var _storeInfo_debug;
|
|
420
|
+
var shouldDebug2 = (_storeInfo_debug = storeInfo.debug) !== null && _storeInfo_debug !== void 0 ? _storeInfo_debug : DebugStores.has(constr);
|
|
421
|
+
var didSet = false;
|
|
422
|
+
var wrappedActions = {};
|
|
385
423
|
for (var key in actions) _loop(key);
|
|
386
424
|
var finishAction = function (val) {
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
425
|
+
if (process.env.NODE_ENV === "development" && shouldDebug2) console.info("(debug) finishAction", {
|
|
426
|
+
didSet
|
|
427
|
+
});
|
|
428
|
+
if (didSet) {
|
|
429
|
+
storeInfo.triggerUpdate();
|
|
430
|
+
didSet = false;
|
|
431
|
+
}
|
|
432
|
+
return val;
|
|
433
|
+
};
|
|
434
|
+
var isTriggering = false;
|
|
435
|
+
var proxiedStore = new Proxy(storeInstance, {
|
|
436
|
+
get(_, key2) {
|
|
437
|
+
if (key2 in wrappedActions) return wrappedActions[key2];
|
|
438
|
+
if (key2 in passThroughKeys) return Reflect.get(storeInstance, key2);
|
|
439
|
+
if (key2 === UNWRAP_PROXY) return storeInstance;
|
|
440
|
+
if (key2 === UNWRAP_STORE_INFO) return storeInfo;
|
|
441
|
+
if (storeAccessTrackers.size) storeAccessTrackers.forEach(function (cb) {
|
|
442
|
+
return cb(storeInfo);
|
|
443
|
+
});
|
|
444
|
+
if (typeof key2 !== "string") return Reflect.get(storeInstance, key2);
|
|
445
|
+
if (!storeInfo.disableTracking) {
|
|
446
|
+
if (gettersState.isGetting) gettersState.curGetKeys.add(key2);
|
|
447
|
+
}
|
|
448
|
+
if (key2 in getters) {
|
|
449
|
+
if (getCache.has(key2)) return getCache.get(key2);
|
|
450
|
+
curGetKeys.clear();
|
|
451
|
+
var isSubGetter = gettersState.isGetting;
|
|
452
|
+
gettersState.isGetting = true;
|
|
453
|
+
var res = getters[key2].call(proxiedStore);
|
|
454
|
+
if (!isSubGetter) gettersState.isGetting = false;
|
|
455
|
+
var _iteratorNormalCompletion = true,
|
|
456
|
+
_didIteratorError = false,
|
|
457
|
+
_iteratorError = void 0;
|
|
458
|
+
try {
|
|
459
|
+
for (var _iterator = curGetKeys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
460
|
+
var gk = _step.value;
|
|
461
|
+
if (!depsToGetter.has(gk)) depsToGetter.set(gk, /* @__PURE__ */new Set());
|
|
462
|
+
depsToGetter.get(gk).add(key2);
|
|
463
|
+
}
|
|
464
|
+
} catch (err) {
|
|
465
|
+
_didIteratorError = true;
|
|
466
|
+
_iteratorError = err;
|
|
467
|
+
} finally {
|
|
412
468
|
try {
|
|
413
|
-
|
|
414
|
-
var gk = _step.value;
|
|
415
|
-
depsToGetter.has(gk) || depsToGetter.set(gk, /* @__PURE__ */new Set());
|
|
416
|
-
var cur = depsToGetter.get(gk);
|
|
417
|
-
cur.add(key2);
|
|
418
|
-
}
|
|
419
|
-
} catch (err) {
|
|
420
|
-
_didIteratorError = !0, _iteratorError = err;
|
|
469
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) _iterator.return();
|
|
421
470
|
} finally {
|
|
422
|
-
|
|
423
|
-
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
424
|
-
} finally {
|
|
425
|
-
if (_didIteratorError) throw _iteratorError;
|
|
426
|
-
}
|
|
471
|
+
if (_didIteratorError) throw _iteratorError;
|
|
427
472
|
}
|
|
428
|
-
return getCache.set(key2, res), res;
|
|
429
473
|
}
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
// SET
|
|
433
|
-
set(target, key2, value, receiver) {
|
|
434
|
-
var cur = Reflect.get(target, key2),
|
|
435
|
-
res = Reflect.set(target, key2, value, receiver);
|
|
436
|
-
return res && cur !== value && (typeof key2 == "string" && (clearGetterCache(key2), shouldDebug2 && (setters.add({
|
|
437
|
-
key: key2,
|
|
438
|
-
value
|
|
439
|
-
}), getShouldDebug(storeInfo) && console.info("(debug) SET", res, key2, value)), process.env.NODE_ENV === "development" && shouldDebug2 && console.info("SET...", {
|
|
440
|
-
key: key2,
|
|
441
|
-
value
|
|
442
|
-
})), isTriggering || (isTriggering = !0, waitForEventLoop(function () {
|
|
443
|
-
storeInfo.triggerUpdate(), isTriggering = !1;
|
|
444
|
-
}))), res;
|
|
474
|
+
getCache.set(key2, res);
|
|
475
|
+
return res;
|
|
445
476
|
}
|
|
446
|
-
|
|
477
|
+
return Reflect.get(storeInstance, key2);
|
|
478
|
+
},
|
|
479
|
+
set(target, key2, value, receiver) {
|
|
480
|
+
var cur = Reflect.get(target, key2);
|
|
481
|
+
var res = Reflect.set(target, key2, value, receiver);
|
|
482
|
+
if (res && cur !== value) {
|
|
483
|
+
if (typeof key2 === "string") {
|
|
484
|
+
clearGetterCache(key2);
|
|
485
|
+
if (shouldDebug2) {
|
|
486
|
+
setters.add({
|
|
487
|
+
key: key2,
|
|
488
|
+
value
|
|
489
|
+
});
|
|
490
|
+
if (getShouldDebug(storeInfo)) console.info("(debug) SET", res, key2, value);
|
|
491
|
+
}
|
|
492
|
+
if (process.env.NODE_ENV === "development" && shouldDebug2) console.info("SET...", {
|
|
493
|
+
key: key2,
|
|
494
|
+
value
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
if (!isTriggering) {
|
|
498
|
+
isTriggering = true;
|
|
499
|
+
waitForEventLoop(function () {
|
|
500
|
+
storeInfo.triggerUpdate();
|
|
501
|
+
isTriggering = false;
|
|
502
|
+
});
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
return res;
|
|
506
|
+
}
|
|
507
|
+
});
|
|
447
508
|
function clearGetterCache(setKey) {
|
|
448
509
|
var parentGetters = depsToGetter.get(setKey);
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
510
|
+
getCache.delete(setKey);
|
|
511
|
+
if (!parentGetters) return;
|
|
512
|
+
var _iteratorNormalCompletion = true,
|
|
513
|
+
_didIteratorError = false,
|
|
514
|
+
_iteratorError = void 0;
|
|
515
|
+
try {
|
|
516
|
+
for (var _iterator = parentGetters[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
517
|
+
var gk = _step.value;
|
|
518
|
+
getCache.delete(gk);
|
|
519
|
+
if (depsToGetter.has(gk)) clearGetterCache(gk);
|
|
520
|
+
}
|
|
521
|
+
} catch (err) {
|
|
522
|
+
_didIteratorError = true;
|
|
523
|
+
_iteratorError = err;
|
|
524
|
+
} finally {
|
|
453
525
|
try {
|
|
454
|
-
|
|
455
|
-
var gk = _step.value;
|
|
456
|
-
getCache.delete(gk), depsToGetter.has(gk) && clearGetterCache(gk);
|
|
457
|
-
}
|
|
458
|
-
} catch (err) {
|
|
459
|
-
_didIteratorError = !0, _iteratorError = err;
|
|
526
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) _iterator.return();
|
|
460
527
|
} finally {
|
|
461
|
-
|
|
462
|
-
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
463
|
-
} finally {
|
|
464
|
-
if (_didIteratorError) throw _iteratorError;
|
|
465
|
-
}
|
|
528
|
+
if (_didIteratorError) throw _iteratorError;
|
|
466
529
|
}
|
|
467
530
|
}
|
|
468
531
|
}
|
|
469
532
|
return proxiedStore;
|
|
470
533
|
}
|
|
471
534
|
var waitForEventLoop = (process.env.NODE_ENV, function (cb) {
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
535
|
+
return cb();
|
|
536
|
+
});
|
|
537
|
+
var counter = 0;
|
|
538
|
+
var passThroughKeys = {
|
|
539
|
+
subscribe: true,
|
|
540
|
+
_version: true,
|
|
541
|
+
_trackers: true,
|
|
542
|
+
$$typeof: true,
|
|
543
|
+
_listeners: true,
|
|
544
|
+
_enableTracking: true
|
|
545
|
+
};
|
|
483
546
|
function getShouldDebug(storeInfo) {
|
|
484
547
|
var info = {
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
return [...trackers].some(function (tracker) {
|
|
548
|
+
storeInstance: storeInfo.store
|
|
549
|
+
};
|
|
550
|
+
return [...storeInfo.trackers].some(function (tracker) {
|
|
489
551
|
return tracker.component && shouldDebug(tracker.component, info);
|
|
490
552
|
});
|
|
491
553
|
}
|