react-state-bucket 1.2.9 → 1.2.10
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/Initial.js +37 -0
- package/Initial.js.map +1 -0
- package/Initial.mjs +37 -0
- package/Initial.mjs.map +1 -0
- package/index.d.ts +4 -0
- package/index.js +42 -75
- package/index.js.map +1 -1
- package/index.mjs +42 -75
- package/index.mjs.map +1 -1
- package/package.json +1 -1
package/Initial.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var Cookie=require('./Cookie.js');const Initial = (initial, data_key, option) => {
|
|
2
|
+
let state = {};
|
|
3
|
+
let data = "";
|
|
4
|
+
if (typeof window !== 'undefined') {
|
|
5
|
+
if (option.store === 'session' || option.store === 'local') {
|
|
6
|
+
let storage = option.store === "session" ? sessionStorage : localStorage;
|
|
7
|
+
data = storage.getItem(data_key);
|
|
8
|
+
}
|
|
9
|
+
else if (option.store === 'url') {
|
|
10
|
+
let url = new URL(window.location.href);
|
|
11
|
+
data = decodeURIComponent(url.searchParams.get(data_key) || "");
|
|
12
|
+
}
|
|
13
|
+
else if (option.store === 'cookie') {
|
|
14
|
+
data = Cookie.getCookie(data_key);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
if (data) {
|
|
18
|
+
try {
|
|
19
|
+
data = JSON.parse(data);
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
data = {};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
data = {};
|
|
27
|
+
}
|
|
28
|
+
for (let key in initial) {
|
|
29
|
+
try {
|
|
30
|
+
state[key] = initial[key].parse(data[key]);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
state[key] = data[key];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return state;
|
|
37
|
+
};exports.default=Initial;//# sourceMappingURL=Initial.js.map
|
package/Initial.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Initial.js","sources":["../src/Initial.ts"],"sourcesContent":["import { BucketOptions, InitialBucketData } from \".\";\nimport { getCookie } from \"./Cookie\";\n\nconst Initial = (initial: InitialBucketData, data_key: string, option: BucketOptions) => {\n let state = {} as Record<string, any>;\n let data: any = \"\"\n\n if (typeof window !== 'undefined') {\n if (option.store === 'session' || option.store === 'local') {\n let storage = option.store === \"session\" ? sessionStorage : localStorage\n data = storage.getItem(data_key)\n } else if (option.store === 'url') {\n let url = new URL(window.location.href)\n data = decodeURIComponent(url.searchParams.get(data_key) || \"\")\n } else if (option.store === 'cookie') {\n data = getCookie(data_key)\n }\n }\n\n if (data) {\n try {\n data = JSON.parse(data)\n } catch (error) {\n data = {}\n }\n } else {\n data = {}\n }\n\n for (let key in initial) {\n try {\n state[key] = initial[key].parse(data[key])\n } catch (error) {\n state[key] = data[key]\n }\n }\n\n return state;\n}\n\nexport default Initial;"],"names":["getCookie"],"mappings":"wGAGA,MAAM,OAAO,GAAG,CAAC,OAA0B,EAAE,QAAgB,EAAE,MAAqB,KAAI;IACrF,IAAI,KAAK,GAAG,EAAyB;IACrC,IAAI,IAAI,GAAQ,EAAE;AAElB,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAChC,QAAA,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,EAAE;AACzD,YAAA,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,KAAK,SAAS,GAAG,cAAc,GAAG,YAAY;AACxE,YAAA,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnC;AAAO,aAAA,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,EAAE;YAChC,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AACvC,YAAA,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClE;AAAO,aAAA,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;AACnC,YAAA,IAAI,GAAGA,gBAAS,CAAC,QAAQ,CAAC;QAC7B;IACH;IAEA,IAAI,IAAI,EAAE;AACP,QAAA,IAAI;AACD,YAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC1B;QAAE,OAAO,KAAK,EAAE;YACb,IAAI,GAAG,EAAE;QACZ;IACH;SAAO;QACJ,IAAI,GAAG,EAAE;IACZ;AAEA,IAAA,KAAK,IAAI,GAAG,IAAI,OAAO,EAAE;AACtB,QAAA,IAAI;AACD,YAAA,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7C;QAAE,OAAO,KAAK,EAAE;YACb,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;QACzB;IACH;AAEA,IAAA,OAAO,KAAK;AACf"}
|
package/Initial.mjs
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import {getCookie}from'./Cookie.mjs';const Initial = (initial, data_key, option) => {
|
|
2
|
+
let state = {};
|
|
3
|
+
let data = "";
|
|
4
|
+
if (typeof window !== 'undefined') {
|
|
5
|
+
if (option.store === 'session' || option.store === 'local') {
|
|
6
|
+
let storage = option.store === "session" ? sessionStorage : localStorage;
|
|
7
|
+
data = storage.getItem(data_key);
|
|
8
|
+
}
|
|
9
|
+
else if (option.store === 'url') {
|
|
10
|
+
let url = new URL(window.location.href);
|
|
11
|
+
data = decodeURIComponent(url.searchParams.get(data_key) || "");
|
|
12
|
+
}
|
|
13
|
+
else if (option.store === 'cookie') {
|
|
14
|
+
data = getCookie(data_key);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
if (data) {
|
|
18
|
+
try {
|
|
19
|
+
data = JSON.parse(data);
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
data = {};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
data = {};
|
|
27
|
+
}
|
|
28
|
+
for (let key in initial) {
|
|
29
|
+
try {
|
|
30
|
+
state[key] = initial[key].parse(data[key]);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
state[key] = data[key];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return state;
|
|
37
|
+
};export{Initial as default};//# sourceMappingURL=Initial.mjs.map
|
package/Initial.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Initial.mjs","sources":["../src/Initial.ts"],"sourcesContent":["import { BucketOptions, InitialBucketData } from \".\";\nimport { getCookie } from \"./Cookie\";\n\nconst Initial = (initial: InitialBucketData, data_key: string, option: BucketOptions) => {\n let state = {} as Record<string, any>;\n let data: any = \"\"\n\n if (typeof window !== 'undefined') {\n if (option.store === 'session' || option.store === 'local') {\n let storage = option.store === \"session\" ? sessionStorage : localStorage\n data = storage.getItem(data_key)\n } else if (option.store === 'url') {\n let url = new URL(window.location.href)\n data = decodeURIComponent(url.searchParams.get(data_key) || \"\")\n } else if (option.store === 'cookie') {\n data = getCookie(data_key)\n }\n }\n\n if (data) {\n try {\n data = JSON.parse(data)\n } catch (error) {\n data = {}\n }\n } else {\n data = {}\n }\n\n for (let key in initial) {\n try {\n state[key] = initial[key].parse(data[key])\n } catch (error) {\n state[key] = data[key]\n }\n }\n\n return state;\n}\n\nexport default Initial;"],"names":[],"mappings":"qCAGA,MAAM,OAAO,GAAG,CAAC,OAA0B,EAAE,QAAgB,EAAE,MAAqB,KAAI;IACrF,IAAI,KAAK,GAAG,EAAyB;IACrC,IAAI,IAAI,GAAQ,EAAE;AAElB,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAChC,QAAA,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,EAAE;AACzD,YAAA,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,KAAK,SAAS,GAAG,cAAc,GAAG,YAAY;AACxE,YAAA,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnC;AAAO,aAAA,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,EAAE;YAChC,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AACvC,YAAA,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClE;AAAO,aAAA,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;AACnC,YAAA,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC;QAC7B;IACH;IAEA,IAAI,IAAI,EAAE;AACP,QAAA,IAAI;AACD,YAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC1B;QAAE,OAAO,KAAK,EAAE;YACb,IAAI,GAAG,EAAE;QACZ;IACH;SAAO;QACJ,IAAI,GAAG,EAAE;IACZ;AAEA,IAAA,KAAK,IAAI,GAAG,IAAI,OAAO,EAAE;AACtB,QAAA,IAAI;AACD,YAAA,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7C;QAAE,OAAO,KAAK,EAAE;YACb,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;QACzB;IACH;AAEA,IAAA,OAAO,KAAK;AACf"}
|
package/index.d.ts
CHANGED
|
@@ -13,7 +13,11 @@ type InitialBucketData = {
|
|
|
13
13
|
declare const createBucket: <T extends InitialBucketData>(initial: T, option?: BucketOptions) => {
|
|
14
14
|
(): Record<keyof T, any>;
|
|
15
15
|
validate(): boolean;
|
|
16
|
+
isValid(key: keyof T): boolean;
|
|
17
|
+
getChanges(): Partial<Record<keyof T, any>>;
|
|
18
|
+
isChanged(k: keyof T): boolean;
|
|
16
19
|
errors(): Record<string, string>;
|
|
20
|
+
getError(key: keyof T): any;
|
|
17
21
|
};
|
|
18
22
|
declare const xv: {
|
|
19
23
|
any: () => xanv.XVAny<any>;
|
package/index.js
CHANGED
|
@@ -1,81 +1,16 @@
|
|
|
1
|
-
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),xanv=require('xanv'),youid=require('youid'),Cookie=require('./Cookie.js');const createBucket = (initial, option) => {
|
|
2
|
-
|
|
3
|
-
const state = {};
|
|
4
|
-
let data_key = (option === null || option === void 0 ? void 0 : option.data_key) || '';
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),xanv=require('xanv'),youid=require('youid'),Cookie=require('./Cookie.js'),Initial=require('./Initial.js');const createBucket = (initial, option) => {
|
|
2
|
+
option = Object.assign({ store: "memory" }, option);
|
|
5
3
|
if (!(option === null || option === void 0 ? void 0 : option.data_key)) {
|
|
6
4
|
let data_key = '';
|
|
7
5
|
for (let key in initial) {
|
|
8
6
|
const field = initial[key];
|
|
9
7
|
data_key += key + ':' + JSON.stringify(field.meta) + ';';
|
|
10
8
|
}
|
|
11
|
-
data_key = youid(data_key);
|
|
12
|
-
}
|
|
13
|
-
option = Object.assign(Object.assign({ store: "memory" }, option), { data_key });
|
|
14
|
-
// set state prototype for validation
|
|
15
|
-
for (let key in initial) {
|
|
16
|
-
try {
|
|
17
|
-
state[key] = initial[key].parse(undefined);
|
|
18
|
-
}
|
|
19
|
-
catch (error) { }
|
|
20
|
-
}
|
|
21
|
-
if (typeof window !== 'undefined') {
|
|
22
|
-
if (option.store === 'session' || option.store === 'local') {
|
|
23
|
-
let storage = option.store === "session" ? sessionStorage : localStorage;
|
|
24
|
-
const value = storage.getItem(data_key);
|
|
25
|
-
let data = {};
|
|
26
|
-
if (value) {
|
|
27
|
-
data = JSON.parse(value);
|
|
28
|
-
}
|
|
29
|
-
for (let key in initial) {
|
|
30
|
-
try {
|
|
31
|
-
state[key] = initial[key].parse(data[key]);
|
|
32
|
-
}
|
|
33
|
-
catch (error) {
|
|
34
|
-
state[key] = data[key];
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
else if (option.store === 'url') {
|
|
39
|
-
let url = new URL(window.location.href);
|
|
40
|
-
const value = url.searchParams.get(data_key);
|
|
41
|
-
let data = {};
|
|
42
|
-
if (value) {
|
|
43
|
-
data = JSON.parse(decodeURIComponent(value));
|
|
44
|
-
}
|
|
45
|
-
for (let key in initial) {
|
|
46
|
-
try {
|
|
47
|
-
state[key] = initial[key].parse(data[key]);
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
state[key] = data[key];
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
else if (option.store === 'cookie') {
|
|
55
|
-
const cookieData = Cookie.getCookie(data_key);
|
|
56
|
-
let data = {};
|
|
57
|
-
if (cookieData) {
|
|
58
|
-
data = JSON.parse(cookieData);
|
|
59
|
-
}
|
|
60
|
-
for (let key in initial) {
|
|
61
|
-
try {
|
|
62
|
-
state[key] = initial[key].parse(data[key]);
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
65
|
-
state[key] = data[key];
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
for (let key in initial) {
|
|
71
|
-
try {
|
|
72
|
-
state[key] = initial[key].parse(undefined);
|
|
73
|
-
}
|
|
74
|
-
catch (error) {
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
9
|
+
option.data_key = youid(data_key);
|
|
78
10
|
}
|
|
11
|
+
const hooks = new Map();
|
|
12
|
+
const state = Initial.default(initial, (option === null || option === void 0 ? void 0 : option.data_key) || '', option || {});
|
|
13
|
+
const changes = {};
|
|
79
14
|
const useBucket = () => {
|
|
80
15
|
const id = "rsb_" + react.useId();
|
|
81
16
|
const [, setState] = react.useState(0);
|
|
@@ -84,7 +19,7 @@
|
|
|
84
19
|
return () => {
|
|
85
20
|
hooks.delete(id);
|
|
86
21
|
};
|
|
87
|
-
}, [
|
|
22
|
+
}, []);
|
|
88
23
|
return new Proxy(state, {
|
|
89
24
|
get: (target, prop) => target[prop],
|
|
90
25
|
set: (target, prop, value) => {
|
|
@@ -93,19 +28,23 @@
|
|
|
93
28
|
}
|
|
94
29
|
target[prop] = value;
|
|
95
30
|
hooks.forEach((hook) => hook());
|
|
31
|
+
changes[prop] = true;
|
|
32
|
+
if ((option === null || option === void 0 ? void 0 : option.onChange) && changes[prop]) {
|
|
33
|
+
option.onChange(prop, value);
|
|
34
|
+
}
|
|
96
35
|
if (typeof window !== 'undefined') {
|
|
97
36
|
value = JSON.stringify(value);
|
|
98
37
|
if (option.store === 'session' || option.store === 'local') {
|
|
99
38
|
let storage = option.store === "session" ? sessionStorage : localStorage;
|
|
100
|
-
storage.setItem(data_key, JSON.stringify(state));
|
|
39
|
+
storage.setItem(option.data_key, JSON.stringify(state));
|
|
101
40
|
}
|
|
102
41
|
else if (option.store === 'url') {
|
|
103
42
|
let url = new URL(window.location.href);
|
|
104
|
-
url.searchParams.set(data_key, encodeURIComponent(JSON.stringify(state)));
|
|
43
|
+
url.searchParams.set(option.data_key, encodeURIComponent(JSON.stringify(state)));
|
|
105
44
|
window.history.replaceState({}, '', url.toString());
|
|
106
45
|
}
|
|
107
46
|
else if (option.store === 'cookie') {
|
|
108
|
-
Cookie.setCookie(data_key, JSON.stringify(state));
|
|
47
|
+
Cookie.setCookie(option.data_key, JSON.stringify(state));
|
|
109
48
|
}
|
|
110
49
|
}
|
|
111
50
|
return true;
|
|
@@ -123,6 +62,25 @@
|
|
|
123
62
|
}
|
|
124
63
|
return true;
|
|
125
64
|
};
|
|
65
|
+
useBucket.isValid = (key) => {
|
|
66
|
+
try {
|
|
67
|
+
initial[key].parse(state[key]);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
return true;
|
|
73
|
+
};
|
|
74
|
+
useBucket.getChanges = () => {
|
|
75
|
+
const changedData = {};
|
|
76
|
+
for (let k in changes) {
|
|
77
|
+
if (changes[k]) {
|
|
78
|
+
changedData[k] = state[k];
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return changedData;
|
|
82
|
+
};
|
|
83
|
+
useBucket.isChanged = (k) => !!changes[k];
|
|
126
84
|
useBucket.errors = () => {
|
|
127
85
|
const errors = {};
|
|
128
86
|
for (let k in initial) {
|
|
@@ -135,6 +93,15 @@
|
|
|
135
93
|
}
|
|
136
94
|
return errors;
|
|
137
95
|
};
|
|
96
|
+
useBucket.getError = (key) => {
|
|
97
|
+
try {
|
|
98
|
+
initial[key].parse(state[key]);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
return error.message;
|
|
102
|
+
}
|
|
103
|
+
return null;
|
|
104
|
+
};
|
|
138
105
|
return useBucket;
|
|
139
106
|
};
|
|
140
107
|
const xv = xanv.xv;exports.createBucket=createBucket;exports.xv=xv;//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { useEffect, useId, useState } from \"react\"\nimport { xv as XV, XVInstanceType } from \"xanv\"\nimport youid from \"youid\";\nimport { getCookie, setCookie } from \"./Cookie\";\n\nexport type StoreType = \"memory\" | \"session\" | \"local\" | \"url\" | \"cookie\"\nexport type BucketOptions = {\n store?: StoreType;\n data_key?: string;\n onChange?: (key: string, value: any) => void\n}\n\nexport type InitialBucketData = {\n [key: string]: XVInstanceType\n}\n\nexport const createBucket = <T extends InitialBucketData>(initial: T, option?: BucketOptions) => {\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { useEffect, useId, useState } from \"react\"\nimport { xv as XV, XVInstanceType } from \"xanv\"\nimport youid from \"youid\";\nimport { getCookie, setCookie } from \"./Cookie\";\nimport Initial from \"./Initial\";\n\nexport type StoreType = \"memory\" | \"session\" | \"local\" | \"url\" | \"cookie\"\nexport type BucketOptions = {\n store?: StoreType;\n data_key?: string;\n onChange?: (key: string, value: any) => void\n}\n\nexport type InitialBucketData = {\n [key: string]: XVInstanceType\n}\n\n\nexport const createBucket = <T extends InitialBucketData>(initial: T, option?: BucketOptions) => {\n option = {\n store: \"memory\",\n ...option,\n }\n\n if (!option?.data_key) {\n let data_key = ''\n for (let key in initial) {\n const field = initial[key]\n data_key += key + ':' + JSON.stringify(field.meta) + ';'\n }\n option.data_key = youid(data_key)\n }\n\n\n const hooks = new Map<string, Function>()\n const state: Record<keyof T, T[keyof T]> = Initial(initial, option?.data_key || '', option || {}) as Record<keyof T, T[keyof T]>;\n const changes: Record<keyof T, boolean> = {} as any\n\n const useBucket = () => {\n const id = \"rsb_\" + useId()\n const [, setState] = useState(0)\n\n useEffect(() => {\n hooks.set(id, () => setState(Math.random()))\n return () => {\n hooks.delete(id)\n }\n }, [])\n\n return new Proxy(state, {\n get: (target: any, prop: string) => target[prop],\n set: (target, prop: string, value) => {\n if (!(prop in initial)) {\n throw new Error(`Property ${String(prop)} is not defined in the bucket.`)\n }\n (target as any)[prop as keyof T] = value;\n hooks.forEach((hook) => hook());\n changes[prop as keyof T] = true\n\n if (option?.onChange && changes[prop as keyof T]) {\n option.onChange(prop as string, value)\n }\n\n if (typeof window !== 'undefined') {\n value = JSON.stringify(value) as any\n if (option.store === 'session' || option.store === 'local') {\n let storage = option.store === \"session\" ? sessionStorage : localStorage\n storage.setItem(option.data_key!, JSON.stringify(state))\n } else if (option.store === 'url') {\n let url = new URL(window.location.href)\n url.searchParams.set(option.data_key!, encodeURIComponent(JSON.stringify(state)))\n window.history.replaceState({}, '', url.toString())\n } else if (option.store === 'cookie') {\n setCookie(option.data_key!, JSON.stringify(state))\n }\n }\n return true;\n }\n }) as Record<keyof T, any>\n }\n\n useBucket.validate = () => {\n try {\n for (let k in initial) {\n initial[k].parse(state[k])\n }\n } catch (error) {\n return false\n }\n return true\n }\n\n useBucket.isValid = (key: keyof T) => {\n try {\n initial[key].parse(state[key])\n } catch (error) {\n return false\n }\n return true\n }\n\n useBucket.getChanges = () => {\n const changedData: Partial<Record<keyof T, any>> = {}\n for (let k in changes) {\n if (changes[k as keyof T]) {\n changedData[k as keyof T] = state[k as keyof T]\n }\n }\n return changedData\n }\n\n useBucket.isChanged = (k: keyof T) => !!changes[k]\n\n useBucket.errors = () => {\n const errors: Record<string, string> = {}\n for (let k in initial) {\n try {\n initial[k].parse(state[k])\n } catch (error: any) {\n errors[k] = error.message\n }\n }\n return errors\n }\n\n useBucket.getError = (key: keyof T) => {\n try {\n initial[key].parse(state[key])\n } catch (error: any) {\n return error.message\n }\n return null\n }\n\n\n return useBucket\n}\n\nexport const xv = XV"],"names":["Initial","useId","useState","useEffect","setCookie","XV"],"mappings":"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"}
|
package/index.mjs
CHANGED
|
@@ -1,81 +1,16 @@
|
|
|
1
|
-
import {useId,useState,useEffect}from'react';import {xv as xv$1}from'xanv';import youid from'youid';import {
|
|
2
|
-
|
|
3
|
-
const state = {};
|
|
4
|
-
let data_key = (option === null || option === void 0 ? void 0 : option.data_key) || '';
|
|
1
|
+
import {useId,useState,useEffect}from'react';import {xv as xv$1}from'xanv';import youid from'youid';import {setCookie}from'./Cookie.mjs';import Initial from'./Initial.mjs';const createBucket = (initial, option) => {
|
|
2
|
+
option = Object.assign({ store: "memory" }, option);
|
|
5
3
|
if (!(option === null || option === void 0 ? void 0 : option.data_key)) {
|
|
6
4
|
let data_key = '';
|
|
7
5
|
for (let key in initial) {
|
|
8
6
|
const field = initial[key];
|
|
9
7
|
data_key += key + ':' + JSON.stringify(field.meta) + ';';
|
|
10
8
|
}
|
|
11
|
-
data_key = youid(data_key);
|
|
12
|
-
}
|
|
13
|
-
option = Object.assign(Object.assign({ store: "memory" }, option), { data_key });
|
|
14
|
-
// set state prototype for validation
|
|
15
|
-
for (let key in initial) {
|
|
16
|
-
try {
|
|
17
|
-
state[key] = initial[key].parse(undefined);
|
|
18
|
-
}
|
|
19
|
-
catch (error) { }
|
|
20
|
-
}
|
|
21
|
-
if (typeof window !== 'undefined') {
|
|
22
|
-
if (option.store === 'session' || option.store === 'local') {
|
|
23
|
-
let storage = option.store === "session" ? sessionStorage : localStorage;
|
|
24
|
-
const value = storage.getItem(data_key);
|
|
25
|
-
let data = {};
|
|
26
|
-
if (value) {
|
|
27
|
-
data = JSON.parse(value);
|
|
28
|
-
}
|
|
29
|
-
for (let key in initial) {
|
|
30
|
-
try {
|
|
31
|
-
state[key] = initial[key].parse(data[key]);
|
|
32
|
-
}
|
|
33
|
-
catch (error) {
|
|
34
|
-
state[key] = data[key];
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
else if (option.store === 'url') {
|
|
39
|
-
let url = new URL(window.location.href);
|
|
40
|
-
const value = url.searchParams.get(data_key);
|
|
41
|
-
let data = {};
|
|
42
|
-
if (value) {
|
|
43
|
-
data = JSON.parse(decodeURIComponent(value));
|
|
44
|
-
}
|
|
45
|
-
for (let key in initial) {
|
|
46
|
-
try {
|
|
47
|
-
state[key] = initial[key].parse(data[key]);
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
state[key] = data[key];
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
else if (option.store === 'cookie') {
|
|
55
|
-
const cookieData = getCookie(data_key);
|
|
56
|
-
let data = {};
|
|
57
|
-
if (cookieData) {
|
|
58
|
-
data = JSON.parse(cookieData);
|
|
59
|
-
}
|
|
60
|
-
for (let key in initial) {
|
|
61
|
-
try {
|
|
62
|
-
state[key] = initial[key].parse(data[key]);
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
65
|
-
state[key] = data[key];
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
for (let key in initial) {
|
|
71
|
-
try {
|
|
72
|
-
state[key] = initial[key].parse(undefined);
|
|
73
|
-
}
|
|
74
|
-
catch (error) {
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
9
|
+
option.data_key = youid(data_key);
|
|
78
10
|
}
|
|
11
|
+
const hooks = new Map();
|
|
12
|
+
const state = Initial(initial, (option === null || option === void 0 ? void 0 : option.data_key) || '', option || {});
|
|
13
|
+
const changes = {};
|
|
79
14
|
const useBucket = () => {
|
|
80
15
|
const id = "rsb_" + useId();
|
|
81
16
|
const [, setState] = useState(0);
|
|
@@ -84,7 +19,7 @@ import {useId,useState,useEffect}from'react';import {xv as xv$1}from'xanv';impor
|
|
|
84
19
|
return () => {
|
|
85
20
|
hooks.delete(id);
|
|
86
21
|
};
|
|
87
|
-
}, [
|
|
22
|
+
}, []);
|
|
88
23
|
return new Proxy(state, {
|
|
89
24
|
get: (target, prop) => target[prop],
|
|
90
25
|
set: (target, prop, value) => {
|
|
@@ -93,19 +28,23 @@ import {useId,useState,useEffect}from'react';import {xv as xv$1}from'xanv';impor
|
|
|
93
28
|
}
|
|
94
29
|
target[prop] = value;
|
|
95
30
|
hooks.forEach((hook) => hook());
|
|
31
|
+
changes[prop] = true;
|
|
32
|
+
if ((option === null || option === void 0 ? void 0 : option.onChange) && changes[prop]) {
|
|
33
|
+
option.onChange(prop, value);
|
|
34
|
+
}
|
|
96
35
|
if (typeof window !== 'undefined') {
|
|
97
36
|
value = JSON.stringify(value);
|
|
98
37
|
if (option.store === 'session' || option.store === 'local') {
|
|
99
38
|
let storage = option.store === "session" ? sessionStorage : localStorage;
|
|
100
|
-
storage.setItem(data_key, JSON.stringify(state));
|
|
39
|
+
storage.setItem(option.data_key, JSON.stringify(state));
|
|
101
40
|
}
|
|
102
41
|
else if (option.store === 'url') {
|
|
103
42
|
let url = new URL(window.location.href);
|
|
104
|
-
url.searchParams.set(data_key, encodeURIComponent(JSON.stringify(state)));
|
|
43
|
+
url.searchParams.set(option.data_key, encodeURIComponent(JSON.stringify(state)));
|
|
105
44
|
window.history.replaceState({}, '', url.toString());
|
|
106
45
|
}
|
|
107
46
|
else if (option.store === 'cookie') {
|
|
108
|
-
setCookie(data_key, JSON.stringify(state));
|
|
47
|
+
setCookie(option.data_key, JSON.stringify(state));
|
|
109
48
|
}
|
|
110
49
|
}
|
|
111
50
|
return true;
|
|
@@ -123,6 +62,25 @@ import {useId,useState,useEffect}from'react';import {xv as xv$1}from'xanv';impor
|
|
|
123
62
|
}
|
|
124
63
|
return true;
|
|
125
64
|
};
|
|
65
|
+
useBucket.isValid = (key) => {
|
|
66
|
+
try {
|
|
67
|
+
initial[key].parse(state[key]);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
return true;
|
|
73
|
+
};
|
|
74
|
+
useBucket.getChanges = () => {
|
|
75
|
+
const changedData = {};
|
|
76
|
+
for (let k in changes) {
|
|
77
|
+
if (changes[k]) {
|
|
78
|
+
changedData[k] = state[k];
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return changedData;
|
|
82
|
+
};
|
|
83
|
+
useBucket.isChanged = (k) => !!changes[k];
|
|
126
84
|
useBucket.errors = () => {
|
|
127
85
|
const errors = {};
|
|
128
86
|
for (let k in initial) {
|
|
@@ -135,6 +93,15 @@ import {useId,useState,useEffect}from'react';import {xv as xv$1}from'xanv';impor
|
|
|
135
93
|
}
|
|
136
94
|
return errors;
|
|
137
95
|
};
|
|
96
|
+
useBucket.getError = (key) => {
|
|
97
|
+
try {
|
|
98
|
+
initial[key].parse(state[key]);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
return error.message;
|
|
102
|
+
}
|
|
103
|
+
return null;
|
|
104
|
+
};
|
|
138
105
|
return useBucket;
|
|
139
106
|
};
|
|
140
107
|
const xv = xv$1;export{createBucket,xv};//# sourceMappingURL=index.mjs.map
|
package/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { useEffect, useId, useState } from \"react\"\nimport { xv as XV, XVInstanceType } from \"xanv\"\nimport youid from \"youid\";\nimport { getCookie, setCookie } from \"./Cookie\";\n\nexport type StoreType = \"memory\" | \"session\" | \"local\" | \"url\" | \"cookie\"\nexport type BucketOptions = {\n store?: StoreType;\n data_key?: string;\n onChange?: (key: string, value: any) => void\n}\n\nexport type InitialBucketData = {\n [key: string]: XVInstanceType\n}\n\nexport const createBucket = <T extends InitialBucketData>(initial: T, option?: BucketOptions) => {\n
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { useEffect, useId, useState } from \"react\"\nimport { xv as XV, XVInstanceType } from \"xanv\"\nimport youid from \"youid\";\nimport { getCookie, setCookie } from \"./Cookie\";\nimport Initial from \"./Initial\";\n\nexport type StoreType = \"memory\" | \"session\" | \"local\" | \"url\" | \"cookie\"\nexport type BucketOptions = {\n store?: StoreType;\n data_key?: string;\n onChange?: (key: string, value: any) => void\n}\n\nexport type InitialBucketData = {\n [key: string]: XVInstanceType\n}\n\n\nexport const createBucket = <T extends InitialBucketData>(initial: T, option?: BucketOptions) => {\n option = {\n store: \"memory\",\n ...option,\n }\n\n if (!option?.data_key) {\n let data_key = ''\n for (let key in initial) {\n const field = initial[key]\n data_key += key + ':' + JSON.stringify(field.meta) + ';'\n }\n option.data_key = youid(data_key)\n }\n\n\n const hooks = new Map<string, Function>()\n const state: Record<keyof T, T[keyof T]> = Initial(initial, option?.data_key || '', option || {}) as Record<keyof T, T[keyof T]>;\n const changes: Record<keyof T, boolean> = {} as any\n\n const useBucket = () => {\n const id = \"rsb_\" + useId()\n const [, setState] = useState(0)\n\n useEffect(() => {\n hooks.set(id, () => setState(Math.random()))\n return () => {\n hooks.delete(id)\n }\n }, [])\n\n return new Proxy(state, {\n get: (target: any, prop: string) => target[prop],\n set: (target, prop: string, value) => {\n if (!(prop in initial)) {\n throw new Error(`Property ${String(prop)} is not defined in the bucket.`)\n }\n (target as any)[prop as keyof T] = value;\n hooks.forEach((hook) => hook());\n changes[prop as keyof T] = true\n\n if (option?.onChange && changes[prop as keyof T]) {\n option.onChange(prop as string, value)\n }\n\n if (typeof window !== 'undefined') {\n value = JSON.stringify(value) as any\n if (option.store === 'session' || option.store === 'local') {\n let storage = option.store === \"session\" ? sessionStorage : localStorage\n storage.setItem(option.data_key!, JSON.stringify(state))\n } else if (option.store === 'url') {\n let url = new URL(window.location.href)\n url.searchParams.set(option.data_key!, encodeURIComponent(JSON.stringify(state)))\n window.history.replaceState({}, '', url.toString())\n } else if (option.store === 'cookie') {\n setCookie(option.data_key!, JSON.stringify(state))\n }\n }\n return true;\n }\n }) as Record<keyof T, any>\n }\n\n useBucket.validate = () => {\n try {\n for (let k in initial) {\n initial[k].parse(state[k])\n }\n } catch (error) {\n return false\n }\n return true\n }\n\n useBucket.isValid = (key: keyof T) => {\n try {\n initial[key].parse(state[key])\n } catch (error) {\n return false\n }\n return true\n }\n\n useBucket.getChanges = () => {\n const changedData: Partial<Record<keyof T, any>> = {}\n for (let k in changes) {\n if (changes[k as keyof T]) {\n changedData[k as keyof T] = state[k as keyof T]\n }\n }\n return changedData\n }\n\n useBucket.isChanged = (k: keyof T) => !!changes[k]\n\n useBucket.errors = () => {\n const errors: Record<string, string> = {}\n for (let k in initial) {\n try {\n initial[k].parse(state[k])\n } catch (error: any) {\n errors[k] = error.message\n }\n }\n return errors\n }\n\n useBucket.getError = (key: keyof T) => {\n try {\n initial[key].parse(state[key])\n } catch (error: any) {\n return error.message\n }\n return null\n }\n\n\n return useBucket\n}\n\nexport const xv = XV"],"names":["XV"],"mappings":"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"}
|
package/package.json
CHANGED