react-state-bucket 1.0.3 → 1.0.4
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/index.d.ts +1 -1
- package/dist/index.js +66 -67
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -4,100 +4,101 @@ export const createBucket = (initial, option) => {
|
|
|
4
4
|
const hooks = new Map();
|
|
5
5
|
let data = new Map();
|
|
6
6
|
let changes = new Map();
|
|
7
|
-
const isWin = typeof window !== 'undefined';
|
|
8
|
-
let url = new URL(isWin ? window.location.href : "");
|
|
9
7
|
let _option = {
|
|
10
8
|
store: "memory",
|
|
11
9
|
...option,
|
|
12
10
|
};
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
let
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
11
|
+
const handleStorage = (isLoaded = true) => {
|
|
12
|
+
if (typeof window !== 'undefined') {
|
|
13
|
+
let url = new URL(window.location.href);
|
|
14
|
+
if (_option.store === 'session') {
|
|
15
|
+
for (let key in initial) {
|
|
16
|
+
let has = sessionStorage.getItem(key) !== null;
|
|
17
|
+
if (isLoaded || !has) {
|
|
18
|
+
if (data.has(key)) {
|
|
19
|
+
sessionStorage.setItem(key, data.get(key));
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
sessionStorage.removeItem(key);
|
|
23
|
+
}
|
|
23
24
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (!url.searchParams.has(key)) {
|
|
27
|
-
url.searchParams.set(key, value);
|
|
28
|
-
isWin && window.history.replaceState(null, '', url.toString());
|
|
25
|
+
else if (has) {
|
|
26
|
+
data.set(key, sessionStorage.getItem(key));
|
|
29
27
|
}
|
|
30
|
-
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else if (_option.store === "url") {
|
|
31
|
+
for (let key in initial) {
|
|
32
|
+
let has = url.searchParams.has(key);
|
|
33
|
+
if (isLoaded || !has) {
|
|
34
|
+
if (data.has(key)) {
|
|
35
|
+
url.searchParams.set(key, data.get(key));
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
url.searchParams.delete(key);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else if (has) {
|
|
42
|
+
data.set(key, url.searchParams.get(key));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
window.history.replaceState(null, '', url.toString());
|
|
31
46
|
}
|
|
32
|
-
changes.set(key, true);
|
|
33
47
|
}
|
|
34
48
|
};
|
|
35
|
-
|
|
49
|
+
for (let key in initial) {
|
|
50
|
+
let value = initial[key];
|
|
51
|
+
data.set(key, value);
|
|
52
|
+
changes.set(key, true);
|
|
53
|
+
}
|
|
54
|
+
handleStorage(false);
|
|
55
|
+
let dispatch = () => {
|
|
56
|
+
hooks.forEach(d => {
|
|
57
|
+
try {
|
|
58
|
+
d();
|
|
59
|
+
}
|
|
60
|
+
catch (error) { }
|
|
61
|
+
});
|
|
62
|
+
};
|
|
36
63
|
const useHook = () => {
|
|
37
64
|
const id = useId();
|
|
38
|
-
const [,
|
|
65
|
+
const [, setUp] = useState(0);
|
|
39
66
|
useEffect(() => {
|
|
40
|
-
hooks.set(id, () =>
|
|
67
|
+
hooks.set(id, () => setUp(Math.random()));
|
|
41
68
|
return () => {
|
|
42
69
|
hooks.delete(id);
|
|
43
70
|
};
|
|
44
71
|
}, []);
|
|
45
|
-
|
|
72
|
+
return {
|
|
46
73
|
set: (key, value) => {
|
|
47
74
|
if (!(key in initial))
|
|
48
75
|
throw new Error(`(${key}) Invalid key provided in the set function. Please verify the structure of the initial state data.`);
|
|
49
|
-
|
|
50
|
-
case "memory":
|
|
51
|
-
data.set(key, value);
|
|
52
|
-
break;
|
|
53
|
-
case "session":
|
|
54
|
-
isWin && sessionStorage.setItem(key, value);
|
|
55
|
-
break;
|
|
56
|
-
case "url":
|
|
57
|
-
url.searchParams.set(key, value);
|
|
58
|
-
isWin && window.history.replaceState(null, '', url.toString());
|
|
59
|
-
break;
|
|
60
|
-
}
|
|
76
|
+
data.set(key, value);
|
|
61
77
|
changes.set(key, true);
|
|
62
|
-
|
|
78
|
+
dispatch();
|
|
79
|
+
handleStorage();
|
|
63
80
|
},
|
|
64
81
|
get: (key) => {
|
|
65
|
-
|
|
66
|
-
case "memory":
|
|
67
|
-
return data.get(key);
|
|
68
|
-
case "session":
|
|
69
|
-
return isWin ? sessionStorage.getItem(key) : initial[key];
|
|
70
|
-
case "url":
|
|
71
|
-
return isWin ? url.searchParams.get(key) : initial[key];
|
|
72
|
-
}
|
|
82
|
+
return data.get(key);
|
|
73
83
|
},
|
|
74
84
|
delete: (key) => {
|
|
75
|
-
|
|
76
|
-
case "memory":
|
|
77
|
-
data.delete(key);
|
|
78
|
-
break;
|
|
79
|
-
case "session":
|
|
80
|
-
isWin && sessionStorage.removeItem(key);
|
|
81
|
-
break;
|
|
82
|
-
case "url":
|
|
83
|
-
url.searchParams.delete(key);
|
|
84
|
-
isWin && window.history.replaceState(null, '', url.toString());
|
|
85
|
-
break;
|
|
86
|
-
}
|
|
85
|
+
data.delete(key);
|
|
87
86
|
changes.set(key, true);
|
|
88
|
-
|
|
87
|
+
dispatch();
|
|
88
|
+
handleStorage();
|
|
89
89
|
},
|
|
90
90
|
clear: () => {
|
|
91
91
|
for (let key in initial) {
|
|
92
|
-
|
|
92
|
+
data.delete(key);
|
|
93
93
|
changes.set(key, true);
|
|
94
94
|
}
|
|
95
|
-
|
|
95
|
+
dispatch();
|
|
96
|
+
handleStorage();
|
|
96
97
|
},
|
|
97
98
|
getState: () => {
|
|
98
99
|
let d = {};
|
|
99
|
-
for (let key
|
|
100
|
-
d[key] =
|
|
100
|
+
for (let key in initial) {
|
|
101
|
+
d[key] = data.get(key);
|
|
101
102
|
}
|
|
102
103
|
return d;
|
|
103
104
|
},
|
|
@@ -105,19 +106,18 @@ export const createBucket = (initial, option) => {
|
|
|
105
106
|
for (let key in state) {
|
|
106
107
|
if (!(key in initial))
|
|
107
108
|
throw new Error(`(${key}) Invalid key provided in the setState function. Please verify the structure of the initial state data.`);
|
|
108
|
-
|
|
109
|
+
data.set(key, state[key]);
|
|
109
110
|
changes.set(key, true);
|
|
110
111
|
}
|
|
111
|
-
|
|
112
|
+
dispatch();
|
|
113
|
+
handleStorage();
|
|
112
114
|
},
|
|
113
115
|
isChange: (key) => Boolean(changes.get(key)),
|
|
114
116
|
getChanges: () => {
|
|
115
117
|
let _changes = {};
|
|
116
118
|
for (let key of changes.keys()) {
|
|
117
|
-
|
|
118
|
-
if (is) {
|
|
119
|
+
if (changes.get(key))
|
|
119
120
|
_changes[key] = true;
|
|
120
|
-
}
|
|
121
121
|
}
|
|
122
122
|
return _changes;
|
|
123
123
|
},
|
|
@@ -127,7 +127,6 @@ export const createBucket = (initial, option) => {
|
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
};
|
|
130
|
-
return root;
|
|
131
130
|
};
|
|
132
131
|
return useHook;
|
|
133
132
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AACZ,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAMlD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAoC,OAAW,EAAE,MAAe,EAAE,EAAE;IAC5F,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAA;IACzC,IAAI,IAAI,GAAG,IAAI,GAAG,EAAY,CAAA;IAC9B,IAAI,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED