@choksheak/react-utils 0.3.9 → 0.4.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/NoSSR.cjs +7 -30
- package/NoSSR.min.cjs +1 -1
- package/NoSSR.min.cjs.map +1 -1
- package/NoSSR.min.mjs +1 -1
- package/NoSSR.min.mjs.map +1 -1
- package/NoSSR.mjs +2 -0
- package/chunk-33UMQLKY.mjs +43 -0
- package/chunk-3V7WBGWQ.mjs +16 -0
- package/chunk-3X25NN6X.cjs +195 -0
- package/chunk-5DO7KC3L.cjs +43 -0
- package/chunk-5PDGU37E.cjs +104 -0
- package/chunk-6ZZ54XM5.min.mjs +2 -0
- package/chunk-6ZZ54XM5.min.mjs.map +1 -0
- package/chunk-74BS2FAO.cjs +12 -0
- package/chunk-F5L32IUC.min.cjs +2 -0
- package/chunk-F5L32IUC.min.cjs.map +1 -0
- package/chunk-GPV6JIQK.mjs +17 -0
- package/chunk-KE3RXVMS.min.cjs +2 -0
- package/chunk-KE3RXVMS.min.cjs.map +1 -0
- package/chunk-KILGR7YA.min.mjs +2 -0
- package/chunk-KILGR7YA.min.mjs.map +1 -0
- package/chunk-KRXENFK3.mjs +195 -0
- package/chunk-MWDH7YON.min.mjs +2 -0
- package/chunk-MWDH7YON.min.mjs.map +1 -0
- package/chunk-NTFFK7ZH.min.cjs +2 -0
- package/chunk-NTFFK7ZH.min.cjs.map +1 -0
- package/chunk-O3RBYG3W.min.cjs +2 -0
- package/chunk-O3RBYG3W.min.cjs.map +1 -0
- package/chunk-PHLY3LR4.mjs +104 -0
- package/chunk-RM4ZGGZ2.min.mjs +2 -0
- package/chunk-RM4ZGGZ2.min.mjs.map +1 -0
- package/chunk-TEZPF6BG.min.cjs +2 -0
- package/chunk-TEZPF6BG.min.cjs.map +1 -0
- package/chunk-UFJNJ3WV.cjs +16 -0
- package/chunk-UFJQLQFI.min.cjs +2 -0
- package/chunk-UFJQLQFI.min.cjs.map +1 -0
- package/chunk-V7L3UICC.min.mjs +2 -0
- package/chunk-V7L3UICC.min.mjs.map +1 -0
- package/chunk-VHMO75EY.min.mjs +2 -0
- package/chunk-VHMO75EY.min.mjs.map +1 -0
- package/chunk-WVLPJPWG.cjs +17 -0
- package/chunk-X6BYQHVC.mjs +12 -0
- package/fetcher.cjs +8 -50
- package/fetcher.d.mts +3 -3
- package/fetcher.d.ts +2 -2
- package/fetcher.min.cjs +1 -1
- package/fetcher.min.cjs.map +1 -1
- package/fetcher.min.mjs +1 -1
- package/fetcher.min.mjs.map +1 -1
- package/fetcher.mjs +5 -11
- package/package.json +124 -29
- package/sharedQuery.cjs +129 -391
- package/sharedQuery.d.mts +54 -10
- package/sharedQuery.d.ts +53 -9
- package/sharedQuery.min.cjs +1 -1
- package/sharedQuery.min.cjs.map +1 -1
- package/sharedQuery.min.mjs +1 -1
- package/sharedQuery.min.mjs.map +1 -1
- package/sharedQuery.mjs +91 -321
- package/sharedState.cjs +15 -304
- package/sharedState.d.mts +4 -4
- package/sharedState.d.ts +4 -4
- package/sharedState.min.cjs +1 -1
- package/sharedState.min.cjs.map +1 -1
- package/sharedState.min.mjs +1 -1
- package/sharedState.min.mjs.map +1 -1
- package/sharedState.mjs +10 -269
- package/storage.cjs +10 -123
- package/storage.d.mts +1 -0
- package/storage.d.ts +1 -0
- package/storage.min.cjs +1 -1
- package/storage.min.cjs.map +1 -1
- package/storage.min.mjs +1 -1
- package/storage.min.mjs.map +1 -1
- package/storage.mjs +6 -92
- package/stringify.cjs +8 -57
- package/stringify.min.cjs +1 -1
- package/stringify.min.cjs.map +1 -1
- package/stringify.min.mjs +1 -1
- package/stringify.min.mjs.map +1 -1
- package/stringify.mjs +6 -30
- package/useDeepMemo.cjs +6 -50
- package/useDeepMemo.min.cjs +1 -1
- package/useDeepMemo.min.cjs.map +1 -1
- package/useDeepMemo.min.mjs +1 -1
- package/useDeepMemo.min.mjs.map +1 -1
- package/useDeepMemo.mjs +4 -13
package/sharedState.mjs
CHANGED
|
@@ -1,272 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
if (!store) {
|
|
12
|
-
return null;
|
|
13
|
-
}
|
|
14
|
-
if ("persistTo" in store && typeof store.persistTo === "string" && "key" in store && typeof store.key === "string") {
|
|
15
|
-
const expiryMs = store.expiryMs || defaultStoreExpiryMs;
|
|
16
|
-
const config = { ...store, expiryMs };
|
|
17
|
-
switch (store.persistTo) {
|
|
18
|
-
case "localStorage":
|
|
19
|
-
return localStoreAdapter(config);
|
|
20
|
-
case "indexedDb":
|
|
21
|
-
return kvStoreAdapter(config);
|
|
22
|
-
default:
|
|
23
|
-
store.persistTo;
|
|
24
|
-
throw new Error(`Unknown store.adapter ${store.persistTo}`);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return store;
|
|
28
|
-
}
|
|
29
|
-
function localStoreAdapter({
|
|
30
|
-
key,
|
|
31
|
-
expiryMs,
|
|
32
|
-
isValid
|
|
33
|
-
}) {
|
|
34
|
-
const adapter = createLocalStore(key, { defaultExpiryMs: expiryMs });
|
|
35
|
-
return {
|
|
36
|
-
set: (key2, value) => {
|
|
37
|
-
if (IS_NOT_BROWSER) return;
|
|
38
|
-
adapter.set(key2, value);
|
|
39
|
-
},
|
|
40
|
-
get: (key2) => {
|
|
41
|
-
if (IS_NOT_BROWSER) return void 0;
|
|
42
|
-
const value = adapter.get(key2);
|
|
43
|
-
if (isValid && !isValid(value)) {
|
|
44
|
-
console.warn(
|
|
45
|
-
`localStorage adapter: Auto-discard invalid value for ${key2}: ${JSON.stringify(value)}`
|
|
46
|
-
);
|
|
47
|
-
adapter.delete(key2);
|
|
48
|
-
return void 0;
|
|
49
|
-
}
|
|
50
|
-
return value;
|
|
51
|
-
},
|
|
52
|
-
delete: (key2) => {
|
|
53
|
-
if (IS_NOT_BROWSER) return;
|
|
54
|
-
adapter.delete(key2);
|
|
55
|
-
},
|
|
56
|
-
clear: () => {
|
|
57
|
-
if (IS_NOT_BROWSER) return;
|
|
58
|
-
adapter.clear();
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
function kvStoreAdapter({
|
|
63
|
-
key,
|
|
64
|
-
expiryMs,
|
|
65
|
-
isValid
|
|
66
|
-
}) {
|
|
67
|
-
const keyPrefix = key + ":";
|
|
68
|
-
return {
|
|
69
|
-
set: async (key2, value) => {
|
|
70
|
-
if (IS_NOT_BROWSER) return;
|
|
71
|
-
await kvStore.set(keyPrefix + key2, value, expiryMs);
|
|
72
|
-
},
|
|
73
|
-
get: async (key2) => {
|
|
74
|
-
if (IS_NOT_BROWSER) return void 0;
|
|
75
|
-
const fullKey = keyPrefix + key2;
|
|
76
|
-
const value = await kvStore.get(fullKey);
|
|
77
|
-
if (value !== void 0 && isValid && !isValid(value)) {
|
|
78
|
-
console.warn(
|
|
79
|
-
`indexedDb adapter: Auto-discard invalid value for ${key2}:`,
|
|
80
|
-
value
|
|
81
|
-
);
|
|
82
|
-
await kvStore.delete(fullKey);
|
|
83
|
-
return void 0;
|
|
84
|
-
}
|
|
85
|
-
return value;
|
|
86
|
-
},
|
|
87
|
-
delete: async (key2) => {
|
|
88
|
-
if (IS_NOT_BROWSER) return;
|
|
89
|
-
await kvStore.delete(keyPrefix + key2);
|
|
90
|
-
},
|
|
91
|
-
clear: async () => {
|
|
92
|
-
if (IS_NOT_BROWSER) return;
|
|
93
|
-
await kvStore.clear();
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
// src/sharedState.ts
|
|
99
|
-
var SharedStateConfig = {
|
|
100
|
-
/**
|
|
101
|
-
* Default duration for storage expiration in milliseconds. Initial value
|
|
102
|
-
* is 30 days, but can be changed to anything.
|
|
103
|
-
*/
|
|
104
|
-
storeExpiryMs: 30 * MS_PER_DAY,
|
|
105
|
-
/**
|
|
106
|
-
* True to load from storage only on mount, false (default) to load in
|
|
107
|
-
* the top level scope when the shared state is defined.
|
|
108
|
-
*/
|
|
109
|
-
lazyLoad: false
|
|
110
|
-
};
|
|
111
|
-
function configureSharedState(config) {
|
|
112
|
-
Object.assign(SharedStateConfig, config);
|
|
113
|
-
}
|
|
114
|
-
function createPubSubStore() {
|
|
115
|
-
const dataByKey = /* @__PURE__ */ new Map();
|
|
116
|
-
const subscribersByKey = /* @__PURE__ */ new Map();
|
|
117
|
-
function notify(key, next, prev) {
|
|
118
|
-
const subscribers = subscribersByKey.get(key);
|
|
119
|
-
if (!subscribers) return;
|
|
120
|
-
const copy = Array.from(subscribers.values());
|
|
121
|
-
for (const subscriber of copy) {
|
|
122
|
-
try {
|
|
123
|
-
subscriber(next, prev);
|
|
124
|
-
} catch (e) {
|
|
125
|
-
console.error(`Error invoking subscriber:`, e);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
return {
|
|
130
|
-
// This could be undefined if T includes undefined, else it should never
|
|
131
|
-
// return undefined because the user has to always specify the default value.
|
|
132
|
-
get(key) {
|
|
133
|
-
return dataByKey.get(key);
|
|
134
|
-
},
|
|
135
|
-
set(key, value) {
|
|
136
|
-
const prev = dataByKey.get(key);
|
|
137
|
-
if (prev === value) return;
|
|
138
|
-
dataByKey.set(key, value);
|
|
139
|
-
notify(key, value, prev);
|
|
140
|
-
},
|
|
141
|
-
delete(key) {
|
|
142
|
-
dataByKey.delete(key);
|
|
143
|
-
},
|
|
144
|
-
setNoNotify(key, value) {
|
|
145
|
-
dataByKey.set(key, value);
|
|
146
|
-
},
|
|
147
|
-
// Subscribe to changes of a specific key
|
|
148
|
-
subscribe(key, subscriber) {
|
|
149
|
-
let subscribers = subscribersByKey.get(key);
|
|
150
|
-
if (!subscribers) {
|
|
151
|
-
subscribers = /* @__PURE__ */ new Set();
|
|
152
|
-
subscribersByKey.set(key, subscribers);
|
|
153
|
-
}
|
|
154
|
-
subscribers.add(subscriber);
|
|
155
|
-
return () => {
|
|
156
|
-
subscribers.delete(subscriber);
|
|
157
|
-
if (subscribers.size === 0) subscribersByKey.delete(key);
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
var pubSubStore = createPubSubStore();
|
|
163
|
-
var STORAGE_KEY = "state";
|
|
164
|
-
var stateKey = 0;
|
|
165
|
-
function sharedState(defaultValue, options) {
|
|
166
|
-
let readyResolve = () => {
|
|
167
|
-
};
|
|
168
|
-
const readyPromise = new Promise((resolve) => {
|
|
169
|
-
readyResolve = resolve;
|
|
170
|
-
});
|
|
171
|
-
const resolveReadyPromise = readyResolve;
|
|
172
|
-
const pubSubKey = String(stateKey++);
|
|
173
|
-
const storageAdapter = getStorageAdapter(
|
|
174
|
-
options,
|
|
175
|
-
SharedStateConfig.storeExpiryMs
|
|
176
|
-
);
|
|
177
|
-
pubSubStore.setNoNotify(pubSubKey, defaultValue);
|
|
178
|
-
const lazyLoad = options?.lazyLoad;
|
|
179
|
-
const lazy = lazyLoad !== void 0 ? lazyLoad : SharedStateConfig.lazyLoad;
|
|
180
|
-
const obj = {
|
|
181
|
-
/** Allow users to await for the completion of data init. */
|
|
182
|
-
readyPromise,
|
|
183
|
-
lazy,
|
|
184
|
-
initStarted: false,
|
|
185
|
-
initDone: false,
|
|
186
|
-
/** `subscribe` function required by useSyncExternalStore. */
|
|
187
|
-
subscribe(subscriber) {
|
|
188
|
-
return pubSubStore.subscribe(pubSubKey, () => subscriber());
|
|
189
|
-
},
|
|
190
|
-
/** Returns true if there is a backing store. */
|
|
191
|
-
hasStore() {
|
|
192
|
-
return Boolean(storageAdapter);
|
|
193
|
-
},
|
|
194
|
-
/**
|
|
195
|
-
* Set a value directly into the store. Does nothing if there is no
|
|
196
|
-
* backing store.
|
|
197
|
-
*
|
|
198
|
-
* Warning: If you want to set the value properly, you should use
|
|
199
|
-
* `setValue()` instead which also updates the in-memory copy.
|
|
200
|
-
*/
|
|
201
|
-
async setInStore(value) {
|
|
202
|
-
return await storageAdapter?.set(STORAGE_KEY, value);
|
|
203
|
-
},
|
|
204
|
-
/**
|
|
205
|
-
* Get a value directly from the store. Returns undefined if there is no
|
|
206
|
-
* backing store.
|
|
207
|
-
*/
|
|
208
|
-
async getFromStore() {
|
|
209
|
-
return await storageAdapter?.get(STORAGE_KEY);
|
|
210
|
-
},
|
|
211
|
-
/**
|
|
212
|
-
* Get the value of the shared state.
|
|
213
|
-
* `getSnapshot` function — must return same ref if value unchanged.
|
|
214
|
-
* Note that this would return the default value if data init from store is
|
|
215
|
-
* not completed yet.
|
|
216
|
-
*/
|
|
217
|
-
getSnapshot() {
|
|
218
|
-
return pubSubStore.get(pubSubKey);
|
|
219
|
-
},
|
|
220
|
-
/** Set the value of the shared state. */
|
|
221
|
-
setValue(next) {
|
|
222
|
-
if (typeof next === "function") {
|
|
223
|
-
const prev = pubSubStore.get(pubSubKey);
|
|
224
|
-
next = next(prev);
|
|
225
|
-
}
|
|
226
|
-
pubSubStore.set(pubSubKey, next);
|
|
227
|
-
void obj.setInStore(next);
|
|
228
|
-
},
|
|
229
|
-
/**
|
|
230
|
-
* Remove the value of the shared state. Actually this just sets the value
|
|
231
|
-
* back to the given default value.
|
|
232
|
-
*/
|
|
233
|
-
delete() {
|
|
234
|
-
pubSubStore.set(pubSubKey, defaultValue);
|
|
235
|
-
void storageAdapter?.set(STORAGE_KEY, defaultValue);
|
|
236
|
-
},
|
|
237
|
-
/** Initial default handling. */
|
|
238
|
-
async initDefaultValueOnce() {
|
|
239
|
-
if (obj.initDone || obj.initStarted) return;
|
|
240
|
-
obj.initStarted = true;
|
|
241
|
-
const stored = await obj.getFromStore();
|
|
242
|
-
const value = stored !== void 0 ? stored : defaultValue;
|
|
243
|
-
pubSubStore.set(pubSubKey, value);
|
|
244
|
-
obj.initDone = true;
|
|
245
|
-
resolveReadyPromise();
|
|
246
|
-
}
|
|
247
|
-
};
|
|
248
|
-
if (!lazy) {
|
|
249
|
-
void obj.initDefaultValueOnce();
|
|
250
|
-
}
|
|
251
|
-
return obj;
|
|
252
|
-
}
|
|
253
|
-
function useSharedState(state) {
|
|
254
|
-
void state.initDefaultValueOnce();
|
|
255
|
-
const value = useSyncExternalStore(
|
|
256
|
-
(onStoreChange) => state.subscribe(onStoreChange),
|
|
257
|
-
() => state.getSnapshot(),
|
|
258
|
-
// getServerSnapshot is needed to prevent SSR dev errors in nextjs.
|
|
259
|
-
() => state.getSnapshot()
|
|
260
|
-
);
|
|
261
|
-
return [value, state.setValue];
|
|
262
|
-
}
|
|
263
|
-
function useSharedStateValue(state) {
|
|
264
|
-
return useSharedState(state)[0];
|
|
265
|
-
}
|
|
266
|
-
function useSharedStateSetter(state) {
|
|
267
|
-
void state.initDefaultValueOnce();
|
|
268
|
-
return state.setValue;
|
|
269
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
SharedStateConfig,
|
|
3
|
+
configureSharedState,
|
|
4
|
+
sharedState,
|
|
5
|
+
useSharedState,
|
|
6
|
+
useSharedStateSetter,
|
|
7
|
+
useSharedStateValue
|
|
8
|
+
} from "./chunk-KRXENFK3.mjs";
|
|
9
|
+
import "./chunk-PHLY3LR4.mjs";
|
|
10
|
+
import "./chunk-X6BYQHVC.mjs";
|
|
270
11
|
export {
|
|
271
12
|
SharedStateConfig,
|
|
272
13
|
configureSharedState,
|
package/storage.cjs
CHANGED
|
@@ -1,124 +1,11 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
19
2
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
var import_localStore = require("@choksheak/ts-utils/localStore");
|
|
30
|
-
var IS_NOT_BROWSER = typeof window === "undefined";
|
|
31
|
-
function getStorageAdapter(options, defaultStoreExpiryMs) {
|
|
32
|
-
const { store } = options ?? {};
|
|
33
|
-
if (!store) {
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
if ("persistTo" in store && typeof store.persistTo === "string" && "key" in store && typeof store.key === "string") {
|
|
37
|
-
const expiryMs = store.expiryMs || defaultStoreExpiryMs;
|
|
38
|
-
const config = { ...store, expiryMs };
|
|
39
|
-
switch (store.persistTo) {
|
|
40
|
-
case "localStorage":
|
|
41
|
-
return localStoreAdapter(config);
|
|
42
|
-
case "indexedDb":
|
|
43
|
-
return kvStoreAdapter(config);
|
|
44
|
-
default:
|
|
45
|
-
store.persistTo;
|
|
46
|
-
throw new Error(`Unknown store.adapter ${store.persistTo}`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return store;
|
|
50
|
-
}
|
|
51
|
-
function localStoreAdapter({
|
|
52
|
-
key,
|
|
53
|
-
expiryMs,
|
|
54
|
-
isValid
|
|
55
|
-
}) {
|
|
56
|
-
const adapter = (0, import_localStore.createLocalStore)(key, { defaultExpiryMs: expiryMs });
|
|
57
|
-
return {
|
|
58
|
-
set: (key2, value) => {
|
|
59
|
-
if (IS_NOT_BROWSER) return;
|
|
60
|
-
adapter.set(key2, value);
|
|
61
|
-
},
|
|
62
|
-
get: (key2) => {
|
|
63
|
-
if (IS_NOT_BROWSER) return void 0;
|
|
64
|
-
const value = adapter.get(key2);
|
|
65
|
-
if (isValid && !isValid(value)) {
|
|
66
|
-
console.warn(
|
|
67
|
-
`localStorage adapter: Auto-discard invalid value for ${key2}: ${JSON.stringify(value)}`
|
|
68
|
-
);
|
|
69
|
-
adapter.delete(key2);
|
|
70
|
-
return void 0;
|
|
71
|
-
}
|
|
72
|
-
return value;
|
|
73
|
-
},
|
|
74
|
-
delete: (key2) => {
|
|
75
|
-
if (IS_NOT_BROWSER) return;
|
|
76
|
-
adapter.delete(key2);
|
|
77
|
-
},
|
|
78
|
-
clear: () => {
|
|
79
|
-
if (IS_NOT_BROWSER) return;
|
|
80
|
-
adapter.clear();
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
function kvStoreAdapter({
|
|
85
|
-
key,
|
|
86
|
-
expiryMs,
|
|
87
|
-
isValid
|
|
88
|
-
}) {
|
|
89
|
-
const keyPrefix = key + ":";
|
|
90
|
-
return {
|
|
91
|
-
set: async (key2, value) => {
|
|
92
|
-
if (IS_NOT_BROWSER) return;
|
|
93
|
-
await import_kvStore.kvStore.set(keyPrefix + key2, value, expiryMs);
|
|
94
|
-
},
|
|
95
|
-
get: async (key2) => {
|
|
96
|
-
if (IS_NOT_BROWSER) return void 0;
|
|
97
|
-
const fullKey = keyPrefix + key2;
|
|
98
|
-
const value = await import_kvStore.kvStore.get(fullKey);
|
|
99
|
-
if (value !== void 0 && isValid && !isValid(value)) {
|
|
100
|
-
console.warn(
|
|
101
|
-
`indexedDb adapter: Auto-discard invalid value for ${key2}:`,
|
|
102
|
-
value
|
|
103
|
-
);
|
|
104
|
-
await import_kvStore.kvStore.delete(fullKey);
|
|
105
|
-
return void 0;
|
|
106
|
-
}
|
|
107
|
-
return value;
|
|
108
|
-
},
|
|
109
|
-
delete: async (key2) => {
|
|
110
|
-
if (IS_NOT_BROWSER) return;
|
|
111
|
-
await import_kvStore.kvStore.delete(keyPrefix + key2);
|
|
112
|
-
},
|
|
113
|
-
clear: async () => {
|
|
114
|
-
if (IS_NOT_BROWSER) return;
|
|
115
|
-
await import_kvStore.kvStore.clear();
|
|
116
|
-
}
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
120
|
-
0 && (module.exports = {
|
|
121
|
-
getStorageAdapter,
|
|
122
|
-
kvStoreAdapter,
|
|
123
|
-
localStoreAdapter
|
|
124
|
-
});
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
var _chunk5PDGU37Ecjs = require('./chunk-5PDGU37E.cjs');
|
|
6
|
+
require('./chunk-74BS2FAO.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
exports.getStorageAdapter = _chunk5PDGU37Ecjs.getStorageAdapter; exports.kvStoreAdapter = _chunk5PDGU37Ecjs.kvStoreAdapter; exports.localStoreAdapter = _chunk5PDGU37Ecjs.localStoreAdapter;
|
package/storage.d.mts
CHANGED
|
@@ -47,6 +47,7 @@ declare function localStoreAdapter<T>({ key, expiryMs, isValid, }: StoreConstruc
|
|
|
47
47
|
set: (key: string, value: T) => void;
|
|
48
48
|
get: (key: string) => T | undefined;
|
|
49
49
|
delete: (key: string) => void;
|
|
50
|
+
/** Note that this will clear all keys in all shared states. */
|
|
50
51
|
clear: () => void;
|
|
51
52
|
};
|
|
52
53
|
/**
|
package/storage.d.ts
CHANGED
|
@@ -45,6 +45,7 @@ export declare function localStoreAdapter<T>({ key, expiryMs, isValid, }: StoreC
|
|
|
45
45
|
set: (key: string, value: T) => void;
|
|
46
46
|
get: (key: string) => T | undefined;
|
|
47
47
|
delete: (key: string) => void;
|
|
48
|
+
/** Note that this will clear all keys in all shared states. */
|
|
48
49
|
clear: () => void;
|
|
49
50
|
};
|
|
50
51
|
/**
|
package/storage.min.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkUFJQLQFImincjs = require('./chunk-UFJQLQFI.min.cjs');require('./chunk-KE3RXVMS.min.cjs');exports.getStorageAdapter = _chunkUFJQLQFImincjs.a; exports.kvStoreAdapter = _chunkUFJQLQFImincjs.c; exports.localStoreAdapter = _chunkUFJQLQFImincjs.b;
|
|
2
2
|
//# sourceMappingURL=storage.min.cjs.map
|
package/storage.min.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["/Users/choksheaklau/src/react-utils/dist/storage.min.cjs"],"names":[],"mappings":"AAAA,wIAA2C,oCAAiC,wJAA0E","file":"/Users/choksheaklau/src/react-utils/dist/storage.min.cjs"}
|
package/storage.min.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{a,b,c}from"./chunk-VHMO75EY.min.mjs";import"./chunk-MWDH7YON.min.mjs";export{a as getStorageAdapter,c as kvStoreAdapter,b as localStoreAdapter};
|
|
2
2
|
//# sourceMappingURL=storage.min.mjs.map
|
package/storage.min.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/storage.mjs
CHANGED
|
@@ -1,95 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
if (!store) {
|
|
8
|
-
return null;
|
|
9
|
-
}
|
|
10
|
-
if ("persistTo" in store && typeof store.persistTo === "string" && "key" in store && typeof store.key === "string") {
|
|
11
|
-
const expiryMs = store.expiryMs || defaultStoreExpiryMs;
|
|
12
|
-
const config = { ...store, expiryMs };
|
|
13
|
-
switch (store.persistTo) {
|
|
14
|
-
case "localStorage":
|
|
15
|
-
return localStoreAdapter(config);
|
|
16
|
-
case "indexedDb":
|
|
17
|
-
return kvStoreAdapter(config);
|
|
18
|
-
default:
|
|
19
|
-
store.persistTo;
|
|
20
|
-
throw new Error(`Unknown store.adapter ${store.persistTo}`);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
return store;
|
|
24
|
-
}
|
|
25
|
-
function localStoreAdapter({
|
|
26
|
-
key,
|
|
27
|
-
expiryMs,
|
|
28
|
-
isValid
|
|
29
|
-
}) {
|
|
30
|
-
const adapter = createLocalStore(key, { defaultExpiryMs: expiryMs });
|
|
31
|
-
return {
|
|
32
|
-
set: (key2, value) => {
|
|
33
|
-
if (IS_NOT_BROWSER) return;
|
|
34
|
-
adapter.set(key2, value);
|
|
35
|
-
},
|
|
36
|
-
get: (key2) => {
|
|
37
|
-
if (IS_NOT_BROWSER) return void 0;
|
|
38
|
-
const value = adapter.get(key2);
|
|
39
|
-
if (isValid && !isValid(value)) {
|
|
40
|
-
console.warn(
|
|
41
|
-
`localStorage adapter: Auto-discard invalid value for ${key2}: ${JSON.stringify(value)}`
|
|
42
|
-
);
|
|
43
|
-
adapter.delete(key2);
|
|
44
|
-
return void 0;
|
|
45
|
-
}
|
|
46
|
-
return value;
|
|
47
|
-
},
|
|
48
|
-
delete: (key2) => {
|
|
49
|
-
if (IS_NOT_BROWSER) return;
|
|
50
|
-
adapter.delete(key2);
|
|
51
|
-
},
|
|
52
|
-
clear: () => {
|
|
53
|
-
if (IS_NOT_BROWSER) return;
|
|
54
|
-
adapter.clear();
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
function kvStoreAdapter({
|
|
59
|
-
key,
|
|
60
|
-
expiryMs,
|
|
61
|
-
isValid
|
|
62
|
-
}) {
|
|
63
|
-
const keyPrefix = key + ":";
|
|
64
|
-
return {
|
|
65
|
-
set: async (key2, value) => {
|
|
66
|
-
if (IS_NOT_BROWSER) return;
|
|
67
|
-
await kvStore.set(keyPrefix + key2, value, expiryMs);
|
|
68
|
-
},
|
|
69
|
-
get: async (key2) => {
|
|
70
|
-
if (IS_NOT_BROWSER) return void 0;
|
|
71
|
-
const fullKey = keyPrefix + key2;
|
|
72
|
-
const value = await kvStore.get(fullKey);
|
|
73
|
-
if (value !== void 0 && isValid && !isValid(value)) {
|
|
74
|
-
console.warn(
|
|
75
|
-
`indexedDb adapter: Auto-discard invalid value for ${key2}:`,
|
|
76
|
-
value
|
|
77
|
-
);
|
|
78
|
-
await kvStore.delete(fullKey);
|
|
79
|
-
return void 0;
|
|
80
|
-
}
|
|
81
|
-
return value;
|
|
82
|
-
},
|
|
83
|
-
delete: async (key2) => {
|
|
84
|
-
if (IS_NOT_BROWSER) return;
|
|
85
|
-
await kvStore.delete(keyPrefix + key2);
|
|
86
|
-
},
|
|
87
|
-
clear: async () => {
|
|
88
|
-
if (IS_NOT_BROWSER) return;
|
|
89
|
-
await kvStore.clear();
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
getStorageAdapter,
|
|
3
|
+
kvStoreAdapter,
|
|
4
|
+
localStoreAdapter
|
|
5
|
+
} from "./chunk-PHLY3LR4.mjs";
|
|
6
|
+
import "./chunk-X6BYQHVC.mjs";
|
|
93
7
|
export {
|
|
94
8
|
getStorageAdapter,
|
|
95
9
|
kvStoreAdapter,
|
package/stringify.cjs
CHANGED
|
@@ -1,58 +1,9 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
19
2
|
|
|
20
|
-
|
|
21
|
-
var
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const cache = /* @__PURE__ */ new Set();
|
|
28
|
-
return JSON.stringify(params, (_, value) => {
|
|
29
|
-
if (typeof value === "function") {
|
|
30
|
-
throw new Error(`Functions should not be passed into query parameters`);
|
|
31
|
-
}
|
|
32
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
33
|
-
return value;
|
|
34
|
-
}
|
|
35
|
-
if (cache.has(value)) {
|
|
36
|
-
return "[Circular]";
|
|
37
|
-
}
|
|
38
|
-
cache.add(value);
|
|
39
|
-
if (value !== params) {
|
|
40
|
-
try {
|
|
41
|
-
JSON.stringify(value);
|
|
42
|
-
} catch {
|
|
43
|
-
return "[Unserializable]";
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return Object.keys(value).sort().reduce(
|
|
47
|
-
(result, key) => {
|
|
48
|
-
result[key] = value[key];
|
|
49
|
-
return result;
|
|
50
|
-
},
|
|
51
|
-
{}
|
|
52
|
-
);
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
56
|
-
0 && (module.exports = {
|
|
57
|
-
stringifyDeterministicForKeys
|
|
58
|
-
});
|
|
3
|
+
|
|
4
|
+
var _chunk5DO7KC3Lcjs = require('./chunk-5DO7KC3L.cjs');
|
|
5
|
+
require('./chunk-74BS2FAO.cjs');
|
|
6
|
+
_chunk5DO7KC3Lcjs.init_stringify.call(void 0, );
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
exports.stringifyDeterministicForKeys = _chunk5DO7KC3Lcjs.stringifyDeterministicForKeys;
|
package/stringify.min.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkTEZPF6BGmincjs = require('./chunk-TEZPF6BG.min.cjs');require('./chunk-KE3RXVMS.min.cjs');_chunkTEZPF6BGmincjs.b.call(void 0, );exports.stringifyDeterministicForKeys = _chunkTEZPF6BGmincjs.a;
|
|
2
2
|
//# sourceMappingURL=stringify.min.cjs.map
|