@choksheak/react-utils 0.4.6 → 0.4.8
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.mjs → NoSSR.js} +2 -0
- package/NoSSR.min.cjs +14 -1
- package/NoSSR.min.cjs.map +1 -1
- package/NoSSR.min.js +15 -0
- package/{NoSSR.min.mjs.map → NoSSR.min.js.map} +1 -1
- package/chunk-4YV72T4D.min.js +105 -0
- package/{storage.min.mjs.map → chunk-4YV72T4D.min.js.map} +1 -1
- package/chunk-5PDGU37E.cjs +104 -0
- package/{storage.mjs → chunk-7CPBZFDV.js} +3 -2
- package/{stringify.mjs → chunk-7XC6EVMX.js} +1 -0
- package/chunk-AXDXFCZV.min.js +35 -0
- package/{stringify.min.mjs.map → chunk-AXDXFCZV.min.js.map} +1 -1
- package/chunk-C6X4GPZ4.min.cjs +596 -0
- package/chunk-C6X4GPZ4.min.cjs.map +1 -0
- package/{sharedState.mjs → chunk-CIDQGOPA.js} +18 -104
- package/chunk-CYTO5EZE.cjs +34 -0
- package/chunk-HFIQE4XZ.cjs +595 -0
- package/chunk-IS3BZTWE.cjs +35 -0
- package/{sharedQuery.mjs → chunk-JYZY2SHD.min.js} +19 -342
- package/chunk-JYZY2SHD.min.js.map +1 -0
- package/chunk-K2L3OVGY.min.cjs +18 -0
- package/chunk-K2L3OVGY.min.cjs.map +1 -0
- package/chunk-KGDXU6Q2.min.cjs +222 -0
- package/chunk-KGDXU6Q2.min.cjs.map +1 -0
- package/chunk-MNWSPF5J.min.js +18 -0
- package/{useDeepMemo.min.mjs.map → chunk-MNWSPF5J.min.js.map} +1 -1
- package/chunk-P2E73RBM.min.cjs +35 -0
- package/chunk-P2E73RBM.min.cjs.map +1 -0
- package/chunk-PCGGKBOL.min.js +222 -0
- package/chunk-PCGGKBOL.min.js.map +1 -0
- package/chunk-PHITDXZT.min.js +36 -0
- package/chunk-PHITDXZT.min.js.map +1 -0
- package/{index.mjs → chunk-RFKUMDNU.js} +19 -364
- package/chunk-RRQBFF4W.min.cjs +105 -0
- package/chunk-RRQBFF4W.min.cjs.map +1 -0
- package/chunk-TST6JKQ5.min.cjs +36 -0
- package/chunk-TST6JKQ5.min.cjs.map +1 -0
- package/chunk-U67V476Y.js +35 -0
- package/chunk-UNDIVFP5.cjs +221 -0
- package/chunk-WXLUEDBO.cjs +17 -0
- package/{useDeepMemo.mjs → chunk-YTXGK6BR.js} +1 -0
- package/dist-4BDJ7HYS.min.js +546 -0
- package/dist-4BDJ7HYS.min.js.map +1 -0
- package/dist-HKOCAKHU.min.cjs +546 -0
- package/dist-HKOCAKHU.min.cjs.map +1 -0
- package/dist-RQU6CWRG.js +545 -0
- package/dist-UKP7SPWZ.cjs +545 -0
- package/index.cjs +43 -985
- package/index.d.cts +2 -2
- package/index.d.ts +2 -2
- package/index.js +43 -0
- package/index.min.cjs +43 -1
- package/index.min.cjs.map +1 -1
- package/index.min.js +44 -0
- package/index.min.js.map +1 -0
- package/magic-string.es-2AQNCEBL.min.js +1309 -0
- package/magic-string.es-2AQNCEBL.min.js.map +1 -0
- package/magic-string.es-HC5PDAU3.cjs +1308 -0
- package/magic-string.es-KDMUXKGI.js +1308 -0
- package/magic-string.es-XJ27RPMN.min.cjs +1309 -0
- package/magic-string.es-XJ27RPMN.min.cjs.map +1 -0
- package/package.json +48 -8
- package/sharedQuery.cjs +10 -944
- package/sharedQuery.d.cts +7 -92
- package/sharedQuery.d.ts +7 -92
- package/sharedQuery.js +17 -0
- package/sharedQuery.min.cjs +17 -1
- package/sharedQuery.min.cjs.map +1 -1
- package/sharedQuery.min.js +18 -0
- package/sharedQuery.min.js.map +1 -0
- package/sharedState.cjs +15 -334
- package/sharedState.d.cts +12 -57
- package/sharedState.d.ts +12 -57
- package/sharedState.js +18 -0
- package/sharedState.min.cjs +18 -1
- package/sharedState.min.cjs.map +1 -1
- package/sharedState.min.js +19 -0
- package/sharedState.min.js.map +1 -0
- package/storage.cjs +10 -129
- package/storage.js +11 -0
- package/storage.min.cjs +11 -1
- package/storage.min.cjs.map +1 -1
- package/storage.min.js +12 -0
- package/storage.min.js.map +1 -0
- package/stringify.cjs +6 -57
- package/stringify.js +7 -0
- package/stringify.min.cjs +7 -1
- package/stringify.min.cjs.map +1 -1
- package/stringify.min.js +8 -0
- package/stringify.min.js.map +1 -0
- package/useDeepMemo.cjs +6 -40
- package/useDeepMemo.js +7 -0
- package/useDeepMemo.min.cjs +7 -1
- package/useDeepMemo.min.cjs.map +1 -1
- package/useDeepMemo.min.js +8 -0
- package/useDeepMemo.min.js.map +1 -0
- package/NoSSR.min.mjs +0 -2
- package/index.min.mjs +0 -2
- package/index.min.mjs.map +0 -1
- package/sharedQuery.min.mjs +0 -2
- package/sharedQuery.min.mjs.map +0 -1
- package/sharedState.min.mjs +0 -2
- package/sharedState.min.mjs.map +0 -1
- package/storage.min.mjs +0 -2
- package/stringify.min.mjs +0 -2
- package/useDeepMemo.min.mjs +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/storage.cjs
CHANGED
|
@@ -1,130 +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 STORE_NAME = "react-utils";
|
|
57
|
-
const adapter = (0, import_localStore.createLocalStore)(STORE_NAME, {
|
|
58
|
-
defaultExpiryMs: expiryMs
|
|
59
|
-
});
|
|
60
|
-
const keyPrefix = key + ":";
|
|
61
|
-
return {
|
|
62
|
-
set: (key2, value) => {
|
|
63
|
-
if (IS_NOT_BROWSER) return;
|
|
64
|
-
adapter.set(keyPrefix + key2, value);
|
|
65
|
-
},
|
|
66
|
-
get: (key2) => {
|
|
67
|
-
if (IS_NOT_BROWSER) return void 0;
|
|
68
|
-
const fullKey = keyPrefix + key2;
|
|
69
|
-
const value = adapter.get(fullKey);
|
|
70
|
-
if (value !== void 0 && isValid && !isValid(value)) {
|
|
71
|
-
console.warn(
|
|
72
|
-
`localStorage adapter: Auto-discard invalid value for ${fullKey}: ${JSON.stringify(value)}`
|
|
73
|
-
);
|
|
74
|
-
adapter.delete(fullKey);
|
|
75
|
-
return void 0;
|
|
76
|
-
}
|
|
77
|
-
return value;
|
|
78
|
-
},
|
|
79
|
-
delete: (key2) => {
|
|
80
|
-
if (IS_NOT_BROWSER) return;
|
|
81
|
-
adapter.delete(keyPrefix + key2);
|
|
82
|
-
},
|
|
83
|
-
/** Note that this will clear all keys in all shared states. */
|
|
84
|
-
clear: () => {
|
|
85
|
-
if (IS_NOT_BROWSER) return;
|
|
86
|
-
adapter.clear();
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
function kvStoreAdapter({
|
|
91
|
-
key,
|
|
92
|
-
expiryMs,
|
|
93
|
-
isValid
|
|
94
|
-
}) {
|
|
95
|
-
const keyPrefix = key + ":";
|
|
96
|
-
return {
|
|
97
|
-
set: async (key2, value) => {
|
|
98
|
-
if (IS_NOT_BROWSER) return;
|
|
99
|
-
await import_kvStore.kvStore.set(keyPrefix + key2, value, expiryMs);
|
|
100
|
-
},
|
|
101
|
-
get: async (key2) => {
|
|
102
|
-
if (IS_NOT_BROWSER) return void 0;
|
|
103
|
-
const fullKey = keyPrefix + key2;
|
|
104
|
-
const value = await import_kvStore.kvStore.get(fullKey);
|
|
105
|
-
if (value !== void 0 && isValid && !isValid(value)) {
|
|
106
|
-
console.warn(
|
|
107
|
-
`indexedDb adapter: Auto-discard invalid value for ${key2}:`,
|
|
108
|
-
value
|
|
109
|
-
);
|
|
110
|
-
await import_kvStore.kvStore.delete(fullKey);
|
|
111
|
-
return void 0;
|
|
112
|
-
}
|
|
113
|
-
return value;
|
|
114
|
-
},
|
|
115
|
-
delete: async (key2) => {
|
|
116
|
-
if (IS_NOT_BROWSER) return;
|
|
117
|
-
await import_kvStore.kvStore.delete(keyPrefix + key2);
|
|
118
|
-
},
|
|
119
|
-
clear: async () => {
|
|
120
|
-
if (IS_NOT_BROWSER) return;
|
|
121
|
-
await import_kvStore.kvStore.clear();
|
|
122
|
-
}
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
126
|
-
0 && (module.exports = {
|
|
127
|
-
getStorageAdapter,
|
|
128
|
-
kvStoreAdapter,
|
|
129
|
-
localStoreAdapter
|
|
130
|
-
});
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
var _chunk5PDGU37Ecjs = require('./chunk-5PDGU37E.cjs');
|
|
6
|
+
require('./chunk-IS3BZTWE.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
exports.getStorageAdapter = _chunk5PDGU37Ecjs.getStorageAdapter; exports.kvStoreAdapter = _chunk5PDGU37Ecjs.kvStoreAdapter; exports.localStoreAdapter = _chunk5PDGU37Ecjs.localStoreAdapter;
|
package/storage.js
ADDED
package/storage.min.cjs
CHANGED
|
@@ -1,2 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
var _chunkRRQBFF4Wmincjs = require('./chunk-RRQBFF4W.min.cjs');
|
|
6
|
+
require('./chunk-TST6JKQ5.min.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
exports.getStorageAdapter = _chunkRRQBFF4Wmincjs.getStorageAdapter; exports.kvStoreAdapter = _chunkRRQBFF4Wmincjs.kvStoreAdapter; exports.localStoreAdapter = _chunkRRQBFF4Wmincjs.localStoreAdapter;
|
|
2
12
|
//# 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;AACE;AACA;AACA;AACF,+DAAiC;AACjC,oCAAiC;AACjC;AACE;AACA;AACA;AACF,qMAAC","file":"/Users/choksheaklau/src/react-utils/dist/storage.min.cjs"}
|
package/storage.min.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getStorageAdapter,
|
|
3
|
+
kvStoreAdapter,
|
|
4
|
+
localStoreAdapter
|
|
5
|
+
} from "./chunk-4YV72T4D.min.js";
|
|
6
|
+
import "./chunk-PHITDXZT.min.js";
|
|
7
|
+
export {
|
|
8
|
+
getStorageAdapter,
|
|
9
|
+
kvStoreAdapter,
|
|
10
|
+
localStoreAdapter
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=storage.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/stringify.cjs
CHANGED
|
@@ -1,58 +1,7 @@
|
|
|
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
|
-
module.exports = __toCommonJS(stringify_exports);
|
|
26
|
-
function stringifyDeterministicForKeys(params) {
|
|
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
|
+
var _chunkCYTO5EZEcjs = require('./chunk-CYTO5EZE.cjs');
|
|
4
|
+
require('./chunk-IS3BZTWE.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
exports.stringifyDeterministicForKeys = _chunkCYTO5EZEcjs.stringifyDeterministicForKeys;
|
package/stringify.js
ADDED
package/stringify.min.cjs
CHANGED
|
@@ -1,2 +1,8 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkP2E73RBMmincjs = require('./chunk-P2E73RBM.min.cjs');
|
|
4
|
+
require('./chunk-TST6JKQ5.min.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
exports.stringifyDeterministicForKeys = _chunkP2E73RBMmincjs.stringifyDeterministicForKeys;
|
|
2
8
|
//# sourceMappingURL=stringify.min.cjs.map
|
package/stringify.min.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["/Users/choksheaklau/src/react-utils/dist/stringify.min.cjs"],"names":[],"mappings":"AAAA;AACE;AACF,+DAAiC;AACjC,oCAAiC;AACjC;AACE;AACF,2FAAC","file":"/Users/choksheaklau/src/react-utils/dist/stringify.min.cjs"}
|
package/stringify.min.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/useDeepMemo.cjs
CHANGED
|
@@ -1,41 +1,7 @@
|
|
|
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
|
-
module.exports = __toCommonJS(useDeepMemo_exports);
|
|
26
|
-
var import_lodash_es = require("lodash-es");
|
|
27
|
-
var import_react = require("react");
|
|
28
|
-
function useDeepMemo(value) {
|
|
29
|
-
const [state, setState] = (0, import_react.useState)(value);
|
|
30
|
-
return (0, import_react.useMemo)(() => {
|
|
31
|
-
if ((0, import_lodash_es.isEqual)(state, value)) {
|
|
32
|
-
return state;
|
|
33
|
-
}
|
|
34
|
-
setState(value);
|
|
35
|
-
return value;
|
|
36
|
-
}, [state, value]);
|
|
37
|
-
}
|
|
38
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
39
|
-
0 && (module.exports = {
|
|
40
|
-
useDeepMemo
|
|
41
|
-
});
|
|
3
|
+
var _chunkWXLUEDBOcjs = require('./chunk-WXLUEDBO.cjs');
|
|
4
|
+
require('./chunk-IS3BZTWE.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
exports.useDeepMemo = _chunkWXLUEDBOcjs.useDeepMemo;
|
package/useDeepMemo.js
ADDED
package/useDeepMemo.min.cjs
CHANGED
|
@@ -1,2 +1,8 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkK2L3OVGYmincjs = require('./chunk-K2L3OVGY.min.cjs');
|
|
4
|
+
require('./chunk-TST6JKQ5.min.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
exports.useDeepMemo = _chunkK2L3OVGYmincjs.useDeepMemo;
|
|
2
8
|
//# sourceMappingURL=useDeepMemo.min.cjs.map
|
package/useDeepMemo.min.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["/Users/choksheaklau/src/react-utils/dist/useDeepMemo.min.cjs"],"names":[],"mappings":"AAAA;AACE;AACF,+DAAiC;AACjC,oCAAiC;AACjC;AACE;AACF,uDAAC","file":"/Users/choksheaklau/src/react-utils/dist/useDeepMemo.min.cjs"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/NoSSR.min.mjs
DELETED
package/index.min.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{http as de,retries as ce}from"@choksheak/ts-utils/http";import{nonNil as le}from"@choksheak/ts-utils/nonNil";import k from"object-sizeof";import{useCallback as I,useEffect as J,useMemo as Y,useRef as fe,useState as ge}from"react";import ye from"xxhashjs";import{MS_PER_DAY as te}from"@choksheak/ts-utils/timeConstants";import{useSyncExternalStore as re}from"react";import{kvStore as P}from"@choksheak/ts-utils/kvStore";import{createLocalStore as Z}from"@choksheak/ts-utils/localStore";var Q=typeof window>"u";function B(e,c){let{store:n}=e??{};if(!n)return null;if("persistTo"in n&&typeof n.persistTo=="string"&&"key"in n&&typeof n.key=="string"){let r=n.expiryMs||c,o={...n,expiryMs:r};switch(n.persistTo){case"localStorage":return q(o);case"indexedDb":return ee(o);default:throw n.persistTo,new Error(`Unknown store.adapter ${n.persistTo}`)}}return n}function q({key:e,expiryMs:c,isValid:n}){let o=Z("react-utils",{defaultExpiryMs:c}),s=e+":";return{set:(i,y)=>{Q||o.set(s+i,y)},get:i=>{if(Q)return;let y=s+i,p=o.get(y);if(p!==void 0&&n&&!n(p)){console.warn(`localStorage adapter: Auto-discard invalid value for ${y}: ${JSON.stringify(p)}`),o.delete(y);return}return p},delete:i=>{Q||o.delete(s+i)},clear:()=>{Q||o.clear()}}}function ee({key:e,expiryMs:c,isValid:n}){let r=e+":";return{set:async(o,s)=>{Q||await P.set(r+o,s,c)},get:async o=>{if(Q)return;let s=r+o,i=await P.get(s);if(i!==void 0&&n&&!n(i)){console.warn(`indexedDb adapter: Auto-discard invalid value for ${o}:`,i),await P.delete(s);return}return i},delete:async o=>{Q||await P.delete(r+o)},clear:async()=>{Q||await P.clear()}}}var N={storeExpiryMs:30*te,lazyLoad:!1};function Ue(e){Object.assign(N,e)}function K(){let e=new Map,c=new Map;function n(r,o,s){let i=c.get(r);if(!i)return;let y=Array.from(i.values());for(let p of y)try{p(o,s)}catch(w){console.error("Error invoking subscriber:",w)}}return{get(r){return e.get(r)},set(r,o){let s=e.get(r);s!==o&&(e.set(r,o),n(r,o,s))},delete(r){e.delete(r)},setNoNotify(r,o){e.set(r,o)},subscribe(r,o){let s=c.get(r);return s||(s=new Set,c.set(r,s)),s.add(o),()=>{s.delete(o),s.size===0&&c.delete(r)}}}}function ne(){if(typeof window<"u"){let e=window.globalThis;return e.reactUtilsPubSubStore||(e.reactUtilsPubSubStore=K())}return K()}var U=ne(),F="state",ae=0;function oe(){if(typeof window<"u"){let e=window.globalThis;return e.reactUtilsStateKey=(e.reactUtilsStateKey??0)+1,e.reactUtilsStateKey}return++ae}function j(e,c){let n=()=>{},r=new Promise(l=>{n=l}),o=n,s=String(oe()),i=B(c,N.storeExpiryMs);U.setNoNotify(s,e);let y=c?.lazyLoad,p=y!==void 0?y:N.lazyLoad;function w(l){let f=l!==void 0?l:e;U.set(s,f),m.initDone=!0,o()}let m={defaultValue:e,readyPromise:r,lazy:p,initStarted:!1,initDone:!1,subscribe(l){return U.subscribe(s,()=>l())},hasStore(){return!!i},setInStore(l){return i?.set(F,l)},getFromStore(){return i?.get(F)},getSnapshot(){return U.get(s)},setValue(l){if(typeof l=="function"){let f=U.get(s);l=l(f)}U.set(s,l),m.setInStore(l)},delete(){return U.set(s,e),i?.set(F,e)},initDefaultValueOnce(){if(m.initDone||m.initStarted)return;m.initStarted=!0;let l=m.getFromStore();if(l instanceof Promise)return l.then(w);w(l)}};return p||m.initDefaultValueOnce(),m}function R(e){return e.initDefaultValueOnce(),[re(n=>e.subscribe(n),()=>e.getSnapshot(),()=>e.getSnapshot()),e.setValue]}function ve(e){return R(e)[0]}function Ce(e){return e.initDefaultValueOnce(),e.setValue}function _(e){let c=new Set;return JSON.stringify(e,(n,r)=>{if(typeof r=="function")throw new Error("Functions should not be passed into query parameters");if(!r||typeof r!="object"||Array.isArray(r))return r;if(c.has(r))return"[Circular]";if(c.add(r),r!==e)try{JSON.stringify(r)}catch{return"[Unserializable]"}return Object.keys(r).sort().reduce((o,s)=>(o[s]=r[s],o),{})})}import{isEqual as se}from"lodash-es";import{useMemo as ie,useState as ue}from"react";function W(e){let[c,n]=ue(e);return ie(()=>se(c,e)?c:(n(e),e),[c,e])}var M={staleMs:0,expiryMs:30*864e5,refetchOnStale:!0,persistTo:void 0,maxSize:100,maxBytes:1e5,log:(...e)=>console.log("[sharedQuery]",...e)};function Ie(e){Object.assign(M,e)}var pe=new Map;function Se(){if(typeof window<"u"){let e=window.globalThis;return e.reactUtilsQueryRegistry??=new Map}return pe}function Te(e){let c=Se(),n=e.queryName||e.url,r=c.get(n);if(r)return r;let o=me(e);return c.set(n,o),o}function me(e){let c=e.url||"",n=e.queryName||c;if(!n)throw new Error("Either queryName or url must be specified.");let r=new Map,o=new Map,s;if(e.queryFn)s=e.queryFn;else if(c){let t=de.use(ce());s=async(...a)=>{let u="",d=a?.[0];if(d){if(typeof d=="string")u=d;else if(typeof d=="object"){let h=[];for(let[x,O]of Object.entries(d))if(O!==void 0)if(Array.isArray(O))for(let v of O)v!==void 0&&h.push([x,String(v)]);else h.push([x,String(O)]);u=new URLSearchParams(h).toString()}u&&(c.includes("?")?u="&"+u:u="?"+u)}return await(await t.get(c+u)).json()}}else throw new Error("Either queryFn or url must be specified");let i=e.refetchFn,y=e?.staleMs??M.staleMs,p=e?.expiryMs??M.expiryMs,w=e?.refetchOnStale??M.refetchOnStale,m=e.store;if(m){if("persistTo"in m&&m.isValid){let t=m.isValid;e={...e,store:{...m,isValid:a=>{if(!a||typeof a!="object")return!1;for(let u of Object.values(a))if(!u||typeof u!="object"||!("data"in u)||!("dataUpdatedMs"in u)||!("lastUpdatedMs"in u)||typeof u.dataUpdatedMs!="number"||typeof u.lastUpdatedMs!="number"||!t(u.data))return!1;return!0}}}}}else{let t=e.persistTo??M.persistTo;t&&(e={...e,store:{persistTo:t,key:n,expiryMs:p}})}let l=e?.maxSize??M.maxSize,f=e?.maxBytes??M.maxBytes,S=!!e?.keepLastNonEmptyData,g=e?.log??M.log,b=j({},e);function G(t){return y===0?!0:Date.now()-t>y}function E(t){return p===0?!1:Date.now()-t>p}function z(){if(!l&&!f)return;let t=b.getSnapshot(),a=Object.keys(t).length;if(a<=1)return;let u=k(t),d=l?a-l:0,T=f?u-f:0;if(d<=0&&T<=0){g(`No need to trim data for ${n}: size=${a} (limit=${l}), byteSize=${u.toLocaleString()} (limit=${f.toLocaleString()})`);return}g(`Need to trim ${n}: numToCut=${d}, bytesToCut=${T}`);let h={...t},x=!1,O=(D,C)=>{if(o.has(D)){g(`Cannot clean up ${D} as it is mounted`);return}let L=k(D)+k(h[D]);g(`Cleaning up unmounted${C?", expired":""} ${D} (byteSize=${L.toLocaleString()})`),d--,T-=L,delete h[D],x=!0},v=Object.entries(h).sort((D,C)=>D[1].lastUpdatedMs-C[1].lastUpdatedMs);for(let[D]of v){if(!E(h[D].lastUpdatedMs))break;O(D,!0)}if(d>0||T>0){x&&(v=Object.entries(h).sort((D,C)=>D[1].lastUpdatedMs-C[1].lastUpdatedMs));for(let[D]of v)if(O(D,!1),d<=0&&T<=0)break}if(!x){g(`No trimmable entries found for ${n}: size=${a} (limit=${l}), byteSize=${u.toLocaleString()} (limit=${f.toLocaleString()})`);return}b.setValue(h),g(`Trimmed data for ${n}: size=[${a} -> ${Object.keys(h).length}] (limit=${l}), byteSize=[${u.toLocaleString()} -> ${k(h).toLocaleString()}] (limit=${f.toLocaleString()})`)}function V(t,a,u=Date.now()){let d={lastUpdatedMs:Date.now(),loading:!1,data:a,dataUpdatedMs:u};b.setValue(T=>({...T,[t]:d})),z()}async function H(t,a,u){g(`Start fetching ${t}, queryType=${a}`);try{let d=await(a==="refetch"&&i?i(...u):s(...u));return g(`Successfully fetched ${t}`),V(t,d,Date.now()),d}catch(d){throw g(`Failed to fetch ${t} for queryType=${a}: ${d}`),d}finally{r.delete(t)}}function $(t,a,...u){let d=r.get(t);if(d)return g(`Deduplicating inflight fetch for ${t}, queryType=${a}`),d.promise;let T=H(t,a,u),h=new AbortController;return r.set(t,{promise:T,abortController:h}),T}let A={queryName:n,queryFn:s,refetchFn:i,expiryMs:p,staleMs:y,refetchOnStale:w,maxSize:l,maxBytes:f,keepLastNonEmptyData:S,log:g,queryState:b,getQueryKey(t){let a=_(t);return a.length>30&&(a=ye.h32(a,39406).toString(16).slice(2)),n+":"+a},getAbortController(t){let a=A.getQueryKey(t);return A.getAbortControllerByKey(a)},getAbortControllerByKey(t){return r.get(t)?.abortController??null},getAbortSignal(t){let a=A.getQueryKey(t);return A.getAbortSignalByKey(a)},getAbortSignalByKey(t){return A.getAbortControllerByKey(t)?.signal??null},async getCachedOrFetch(...t){let a=Date.now();await b.readyPromise;let u=Date.now()-a,d=A.getQueryKey(t),T=b.getSnapshot()?.[d];if(u&&g(`${d}: Waited for ${u}ms before data is ready`),T?.data&&!E(T.dataUpdatedMs??0))return G(T.dataUpdatedMs??0)?(w&&(g(`refetchOnStale for ${d}`),$(d,"query",...t)),g(`Returning stale data for ${d}`),T):(g(`Return fresh data ${d} from cache without fetching`),T);let h=await $(d,"query",...t),x=Date.now();return{lastUpdatedMs:x,loading:!1,data:h,dataUpdatedMs:x}},getQueryValue(t){return b.getSnapshot()?.[t]},getData(t){let a=b.getSnapshot()?.[t];if(a?.lastUpdatedMs&&E(a.lastUpdatedMs)){A.deleteData(t);return}return a?.data},setData:V,async updateFromSource(...t){let a=A.getQueryKey(t);return await $(a,"query",...t)},async refetch(...t){let a=A.getQueryKey(t);return await $(a,"refetch",...t)},deleteData(t){let u={...b.getSnapshot()};delete u[t],b.setValue(u);let d=r.get(t);d&&(r.delete(t),d.abortController.abort("Deleted"))},clear(){b.delete();for(let{abortController:t}of Array.from(r.values()))t.abort("Cleared");r.clear()},mount(t){o.set(t,(o.get(t)??0)+1)},unmount(t){let a=o.get(t);a===1?o.delete(t):o.set(t,(a??0)-1)},enforceSizeLimit:z};return A}function Je(e){return Te(e)}var X={lastUpdatedMs:0,loading:!0};function Ye(e,...c){let n=W(c),[r,o]=R(e.queryState),s=fe(!0),i=Y(()=>e.getQueryKey(n),[e,n]),y=r[i]??X,p=I(f=>{o(S=>{let g={...S};return g[i]=typeof f=="function"?f(g[i]??X):f,g})},[i,o]),[w,m]=ge();J(()=>{e.keepLastNonEmptyData&&y.data!==void 0&&m(y.data)},[e.keepLastNonEmptyData,y.data]);let l=I(async f=>{if(e.log(`Begin executing shared query ${i}, isRefetch=${f}`),!!s.current){p(S=>({...S,lastUpdatedMs:Date.now(),loading:!0}));try{let S;if(f){let g=await e.refetch(...n),b=Date.now();S={lastUpdatedMs:b,loading:!1,data:g,dataUpdatedMs:b}}else S=await e.getCachedOrFetch(...n);return s.current?(p({...S,loading:!1}),S.data):void 0}catch(S){if(!s.current)return;let g=Date.now();p(b=>({...b,lastUpdatedMs:g,loading:!1,error:S,errorUpdatedMs:g}))}}},[e,i,p,n]);return J(()=>(s.current=!0,e.mount(i),l(!1),()=>{s.current=!1,e.unmount(i)}),[l,e,i]),Y(()=>({...y,data:y.data!==void 0?y.data:w,latestData:y.data,abortCurrentQuery:f=>{let S=e.getAbortControllerByKey(i);return S?.abort(f),!!S},getCachedOrFetch:async()=>{let f=await e.getCachedOrFetch(...n);return le(f.data,typeof f.error=="string"?f.error:JSON.stringify(f.error))},refetch:()=>l(!0),setData:(f,S)=>{e.setData(i,f,S)},deleteData:()=>{e.deleteData(i)}}),[l,w,e,i,y,n])}export{M as SharedQueryConfig,N as SharedStateConfig,Ie as configureSharedQuery,Ue as configureSharedState,B as getStorageAdapter,ee as kvStoreAdapter,q as localStoreAdapter,Je as sharedQuery,j as sharedState,_ as stringifyDeterministicForKeys,W as useDeepMemo,Ye as useSharedQuery,R as useSharedState,Ce as useSharedStateSetter,ve as useSharedStateValue};
|
|
2
|
-
//# sourceMappingURL=index.min.mjs.map
|