react-state-bucket 1.2.16 → 1.2.17

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.
@@ -1,3 +1,5 @@
1
+ 'use strict';
2
+
1
3
  function setCookie(key, value, days = 7) {
2
4
  const expires = new Date(Date.now() + days * 864e5).toUTCString();
3
5
  document.cookie =
@@ -13,4 +15,8 @@ function getCookie(key) {
13
15
  }
14
16
  }
15
17
  return null;
16
- }export{getCookie,setCookie};//# sourceMappingURL=Cookie.mjs.map
18
+ }
19
+
20
+ exports.getCookie = getCookie;
21
+ exports.setCookie = setCookie;
22
+ //# sourceMappingURL=Cookie.cjs.map
package/Cookie.cjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cookie.cjs","sources":["../src/Cookie.ts"],"sourcesContent":["export function setCookie(\n key: string,\n value: string,\n days = 7\n) {\n const expires = new Date(Date.now() + days * 864e5).toUTCString();\n document.cookie =\n `${encodeURIComponent(key)}=${encodeURIComponent(value)}; ` +\n `expires=${expires}; path=/; SameSite=Lax`;\n}\n\nexport function getCookie(key: string): string | null {\n const name = encodeURIComponent(key) + \"=\";\n const parts = document.cookie.split(\"; \");\n\n for (const part of parts) {\n if (part.startsWith(name)) {\n return decodeURIComponent(part.slice(name.length));\n }\n }\n\n return null;\n}"],"names":[],"mappings":";;AAAM,SAAU,SAAS,CACtB,GAAW,EACX,KAAa,EACb,IAAI,GAAG,CAAC,EAAA;AAER,IAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,WAAW,EAAE;AACjE,IAAA,QAAQ,CAAC,MAAM;QACZ,CAAA,EAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAA,EAAA,CAAI;YAC3D,CAAA,QAAA,EAAW,OAAO,wBAAwB;AAChD;AAEM,SAAU,SAAS,CAAC,GAAW,EAAA;IAClC,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG;IAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAEzC,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YACxB,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD;IACH;AAEA,IAAA,OAAO,IAAI;AACd;;;;;"}
package/Cookie.js CHANGED
@@ -1,4 +1,4 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});function setCookie(key, value, days = 7) {
1
+ function setCookie(key, value, days = 7) {
2
2
  const expires = new Date(Date.now() + days * 864e5).toUTCString();
3
3
  document.cookie =
4
4
  `${encodeURIComponent(key)}=${encodeURIComponent(value)}; ` +
@@ -13,4 +13,7 @@ function getCookie(key) {
13
13
  }
14
14
  }
15
15
  return null;
16
- }exports.getCookie=getCookie;exports.setCookie=setCookie;//# sourceMappingURL=Cookie.js.map
16
+ }
17
+
18
+ export { getCookie, setCookie };
19
+ //# sourceMappingURL=Cookie.js.map
package/Cookie.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Cookie.js","sources":["../src/Cookie.ts"],"sourcesContent":["export function setCookie(\n key: string,\n value: string,\n days = 7\n) {\n const expires = new Date(Date.now() + days * 864e5).toUTCString();\n document.cookie =\n `${encodeURIComponent(key)}=${encodeURIComponent(value)}; ` +\n `expires=${expires}; path=/; SameSite=Lax`;\n}\n\nexport function getCookie(key: string): string | null {\n const name = encodeURIComponent(key) + \"=\";\n const parts = document.cookie.split(\"; \");\n\n for (const part of parts) {\n if (part.startsWith(name)) {\n return decodeURIComponent(part.slice(name.length));\n }\n }\n\n return null;\n}"],"names":[],"mappings":"sEAAM,SAAU,SAAS,CACtB,GAAW,EACX,KAAa,EACb,IAAI,GAAG,CAAC,EAAA;AAER,IAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,WAAW,EAAE;AACjE,IAAA,QAAQ,CAAC,MAAM;QACZ,CAAA,EAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAA,EAAA,CAAI;YAC3D,CAAA,QAAA,EAAW,OAAO,wBAAwB;AAChD;AAEM,SAAU,SAAS,CAAC,GAAW,EAAA;IAClC,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG;IAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAEzC,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YACxB,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD;IACH;AAEA,IAAA,OAAO,IAAI;AACd"}
1
+ {"version":3,"file":"Cookie.js","sources":["../src/Cookie.ts"],"sourcesContent":["export function setCookie(\n key: string,\n value: string,\n days = 7\n) {\n const expires = new Date(Date.now() + days * 864e5).toUTCString();\n document.cookie =\n `${encodeURIComponent(key)}=${encodeURIComponent(value)}; ` +\n `expires=${expires}; path=/; SameSite=Lax`;\n}\n\nexport function getCookie(key: string): string | null {\n const name = encodeURIComponent(key) + \"=\";\n const parts = document.cookie.split(\"; \");\n\n for (const part of parts) {\n if (part.startsWith(name)) {\n return decodeURIComponent(part.slice(name.length));\n }\n }\n\n return null;\n}"],"names":[],"mappings":"AAAM,SAAU,SAAS,CACtB,GAAW,EACX,KAAa,EACb,IAAI,GAAG,CAAC,EAAA;AAER,IAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,WAAW,EAAE;AACjE,IAAA,QAAQ,CAAC,MAAM;QACZ,CAAA,EAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAA,EAAA,CAAI;YAC3D,CAAA,QAAA,EAAW,OAAO,wBAAwB;AAChD;AAEM,SAAU,SAAS,CAAC,GAAW,EAAA;IAClC,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG;IAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAEzC,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YACxB,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD;IACH;AAEA,IAAA,OAAO,IAAI;AACd;;;;"}
@@ -1,4 +1,8 @@
1
- import {getCookie}from'./Cookie.mjs';const Initial = (initial, data_key, option) => {
1
+ 'use strict';
2
+
3
+ var Cookie = require('./Cookie.cjs');
4
+
5
+ const Initial = (initial, data_key, option) => {
2
6
  let state = {};
3
7
  let data = "";
4
8
  if (typeof window !== 'undefined') {
@@ -11,7 +15,7 @@ import {getCookie}from'./Cookie.mjs';const Initial = (initial, data_key, option)
11
15
  data = decodeURIComponent(url.searchParams.get(data_key) || "");
12
16
  }
13
17
  else if (option.store === 'cookie') {
14
- data = getCookie(data_key);
18
+ data = Cookie.getCookie(data_key);
15
19
  }
16
20
  }
17
21
  if (data) {
@@ -34,4 +38,7 @@ import {getCookie}from'./Cookie.mjs';const Initial = (initial, data_key, option)
34
38
  }
35
39
  }
36
40
  return state;
37
- };export{Initial as default};//# sourceMappingURL=Initial.mjs.map
41
+ };
42
+
43
+ module.exports = Initial;
44
+ //# sourceMappingURL=Initial.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Initial.cjs","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":";;;;AAGA,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.js CHANGED
@@ -1,4 +1,6 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var Cookie=require('./Cookie.js');const Initial = (initial, data_key, option) => {
1
+ import { getCookie } from './Cookie.js';
2
+
3
+ const Initial = (initial, data_key, option) => {
2
4
  let state = {};
3
5
  let data = "";
4
6
  if (typeof window !== 'undefined') {
@@ -11,7 +13,7 @@
11
13
  data = decodeURIComponent(url.searchParams.get(data_key) || "");
12
14
  }
13
15
  else if (option.store === 'cookie') {
14
- data = Cookie.getCookie(data_key);
16
+ data = getCookie(data_key);
15
17
  }
16
18
  }
17
19
  if (data) {
@@ -34,4 +36,7 @@
34
36
  }
35
37
  }
36
38
  return state;
37
- };exports.default=Initial;//# sourceMappingURL=Initial.js.map
39
+ };
40
+
41
+ export { Initial as default };
42
+ //# sourceMappingURL=Initial.js.map
package/Initial.js.map CHANGED
@@ -1 +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"}
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":[],"mappings":";;AAGA,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;;;;"}
@@ -1,4 +1,12 @@
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) => {
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+ var xanv = require('xanv');
5
+ var youid = require('youid');
6
+ var Cookie = require('./Cookie.cjs');
7
+ var Initial = require('./Initial.cjs');
8
+
9
+ const createBucket = (initial, option) => {
2
10
  option = Object.assign({ store: "memory" }, option);
3
11
  if (!(option === null || option === void 0 ? void 0 : option.data_key)) {
4
12
  let data_key = '';
@@ -13,9 +21,9 @@ import {useId,useState,useEffect}from'react';import {xv as xv$1}from'xanv';impor
13
21
  const changes = {};
14
22
  const errors = {};
15
23
  const useBucket = () => {
16
- const id = "rsb_" + useId();
17
- const [, setState] = useState(0);
18
- useEffect(() => {
24
+ const id = "rsb_" + react.useId();
25
+ const [, setState] = react.useState(0);
26
+ react.useEffect(() => {
19
27
  hooks.set(id, () => setState(Math.random()));
20
28
  return () => {
21
29
  hooks.delete(id);
@@ -55,7 +63,7 @@ import {useId,useState,useEffect}from'react';import {xv as xv$1}from'xanv';impor
55
63
  window.history.replaceState({}, '', url.toString());
56
64
  }
57
65
  else if (option.store === 'cookie') {
58
- setCookie(option.data_key, JSON.stringify(state));
66
+ Cookie.setCookie(option.data_key, JSON.stringify(state));
59
67
  }
60
68
  }
61
69
  };
@@ -154,4 +162,8 @@ import {useId,useState,useEffect}from'react';import {xv as xv$1}from'xanv';impor
154
162
  };
155
163
  return useBucket;
156
164
  };
157
- const xv = xv$1;export{createBucket,xv};//# sourceMappingURL=index.mjs.map
165
+ const xv = xanv.xv;
166
+
167
+ exports.createBucket = createBucket;
168
+ exports.xv = xv;
169
+ //# sourceMappingURL=index.cjs.map
package/index.cjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import { useEffect, useId, useState } from \"react\"\nimport { Infer, 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 const hooks = new Map<string, Function>()\n const state: Record<keyof T, any> = Initial(initial, option?.data_key || '', option || {}) as Record<keyof T, any>;\n const changes: Record<keyof T, boolean> = {} as any\n const errors: Record<keyof T, string> = {} 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 const get = (key: keyof T, defaultValue?: any) => {\n if (!(key in initial)) {\n throw new Error(`Property ${String(key)} is not defined in the bucket.`)\n }\n let value = state[key];\n if (value === undefined && defaultValue !== undefined) {\n value = defaultValue\n }\n return value;\n }\n\n const set = (key: keyof T, value: any, dispatch = true) => {\n if (!(key in initial)) {\n throw new Error(`Property ${String(key)} is not defined in the bucket.`)\n }\n state[key] = value;\n if (dispatch) {\n hooks.forEach((hook) => hook());\n }\n changes[key] = true\n if (option?.onChange && changes[key]) {\n option.onChange(key 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 }\n\n const sets = (data: Partial<Infer<T>>, dispatch = true) => {\n for (let k in data) {\n let v = data[k]\n set(k, v, false)\n }\n\n if (dispatch) {\n hooks.forEach((hook) => hook());\n }\n }\n\n const _delete = (key: keyof T) => {\n set(key, undefined)\n }\n\n const clear = () => {\n const initVal = Initial(initial, option?.data_key || '', option || {}) as Record<keyof T, any>;\n for (let key in initial) {\n state[key] = initVal[key];\n delete changes[key]\n }\n hooks.forEach((hook) => hook());\n }\n\n const getChanges = () => {\n const changedData: Partial<Record<keyof T, any>> = {}\n for (let k in changes) {\n if (changes[k]) {\n changedData[k] = state[k]\n }\n }\n return changedData\n }\n\n const isChanged = (k: keyof T) => !!changes[k]\n\n const isValid = (key: keyof T) => {\n try {\n initial[key].parse(state[key])\n } catch (error: any) {\n errors[key] = (error as any).message\n }\n hooks.forEach((hook) => hook());\n return !(key in errors)\n }\n\n const validate = () => {\n for (let k in initial) {\n try {\n initial[k].parse(state[k])\n } catch (error: any) {\n errors[k] = (error as any).message\n }\n }\n hooks.forEach((hook) => hook());\n return Object.keys(errors).length === 0\n }\n\n const getError = (key: keyof T) => {\n if (key in errors) {\n return errors[key]\n }\n return ''\n }\n\n const getErrors = () => {\n return errors\n }\n\n const setError = (key: keyof T, message: string) => {\n errors[key] = message\n hooks.forEach((hook) => hook());\n }\n\n const clearErrors = () => {\n for (let k in errors) {\n delete errors[k]\n }\n hooks.forEach((hook) => hook());\n }\n\n const clearError = (key: keyof T) => {\n delete errors[key]\n hooks.forEach((hook) => hook());\n }\n\n\n return {\n state,\n get,\n set,\n sets,\n delete: _delete,\n clear,\n validate,\n isValid,\n getChanges,\n isChanged,\n getErrors,\n getError,\n setError,\n clearErrors,\n clearError\n }\n }\n\n return useBucket\n}\n\nexport const xv = XV"],"names":["useId","useState","useEffect","setCookie","XV"],"mappings":"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"}
package/index.js CHANGED
@@ -1,4 +1,10 @@
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) => {
1
+ import { useId, useState, useEffect } from 'react';
2
+ import { xv as xv$1 } from 'xanv';
3
+ import youid from 'youid';
4
+ import { setCookie } from './Cookie.js';
5
+ import Initial from './Initial.js';
6
+
7
+ const createBucket = (initial, option) => {
2
8
  option = Object.assign({ store: "memory" }, option);
3
9
  if (!(option === null || option === void 0 ? void 0 : option.data_key)) {
4
10
  let data_key = '';
@@ -9,13 +15,13 @@
9
15
  option.data_key = youid(data_key);
10
16
  }
11
17
  const hooks = new Map();
12
- const state = Initial.default(initial, (option === null || option === void 0 ? void 0 : option.data_key) || '', option || {});
18
+ const state = Initial(initial, (option === null || option === void 0 ? void 0 : option.data_key) || '', option || {});
13
19
  const changes = {};
14
20
  const errors = {};
15
21
  const useBucket = () => {
16
- const id = "rsb_" + react.useId();
17
- const [, setState] = react.useState(0);
18
- react.useEffect(() => {
22
+ const id = "rsb_" + useId();
23
+ const [, setState] = useState(0);
24
+ useEffect(() => {
19
25
  hooks.set(id, () => setState(Math.random()));
20
26
  return () => {
21
27
  hooks.delete(id);
@@ -55,7 +61,7 @@
55
61
  window.history.replaceState({}, '', url.toString());
56
62
  }
57
63
  else if (option.store === 'cookie') {
58
- Cookie.setCookie(option.data_key, JSON.stringify(state));
64
+ setCookie(option.data_key, JSON.stringify(state));
59
65
  }
60
66
  }
61
67
  };
@@ -72,7 +78,7 @@
72
78
  set(key, undefined);
73
79
  };
74
80
  const clear = () => {
75
- const initVal = Initial.default(initial, (option === null || option === void 0 ? void 0 : option.data_key) || '', option || {});
81
+ const initVal = Initial(initial, (option === null || option === void 0 ? void 0 : option.data_key) || '', option || {});
76
82
  for (let key in initial) {
77
83
  state[key] = initVal[key];
78
84
  delete changes[key];
@@ -154,4 +160,7 @@
154
160
  };
155
161
  return useBucket;
156
162
  };
157
- const xv = xanv.xv;exports.createBucket=createBucket;exports.xv=xv;//# sourceMappingURL=index.js.map
163
+ const xv = xv$1;
164
+
165
+ export { createBucket, xv };
166
+ //# 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 { Infer, 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 const hooks = new Map<string, Function>()\n const state: Record<keyof T, any> = Initial(initial, option?.data_key || '', option || {}) as Record<keyof T, any>;\n const changes: Record<keyof T, boolean> = {} as any\n const errors: Record<keyof T, string> = {} 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 const get = (key: keyof T, defaultValue?: any) => {\n if (!(key in initial)) {\n throw new Error(`Property ${String(key)} is not defined in the bucket.`)\n }\n let value = state[key];\n if (value === undefined && defaultValue !== undefined) {\n value = defaultValue\n }\n return value;\n }\n\n const set = (key: keyof T, value: any, dispatch = true) => {\n if (!(key in initial)) {\n throw new Error(`Property ${String(key)} is not defined in the bucket.`)\n }\n state[key] = value;\n if (dispatch) {\n hooks.forEach((hook) => hook());\n }\n changes[key] = true\n if (option?.onChange && changes[key]) {\n option.onChange(key 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 }\n\n const sets = (data: Partial<Infer<T>>, dispatch = true) => {\n for (let k in data) {\n let v = data[k]\n set(k, v, false)\n }\n\n if (dispatch) {\n hooks.forEach((hook) => hook());\n }\n }\n\n const _delete = (key: keyof T) => {\n set(key, undefined)\n }\n\n const clear = () => {\n const initVal = Initial(initial, option?.data_key || '', option || {}) as Record<keyof T, any>;\n for (let key in initial) {\n state[key] = initVal[key];\n delete changes[key]\n }\n hooks.forEach((hook) => hook());\n }\n\n const getChanges = () => {\n const changedData: Partial<Record<keyof T, any>> = {}\n for (let k in changes) {\n if (changes[k]) {\n changedData[k] = state[k]\n }\n }\n return changedData\n }\n\n const isChanged = (k: keyof T) => !!changes[k]\n\n const isValid = (key: keyof T) => {\n try {\n initial[key].parse(state[key])\n } catch (error: any) {\n errors[key] = (error as any).message\n }\n hooks.forEach((hook) => hook());\n return !(key in errors)\n }\n\n const validate = () => {\n for (let k in initial) {\n try {\n initial[k].parse(state[k])\n } catch (error: any) {\n errors[k] = (error as any).message\n }\n }\n hooks.forEach((hook) => hook());\n return Object.keys(errors).length === 0\n }\n\n const getError = (key: keyof T) => {\n if (key in errors) {\n return errors[key]\n }\n return ''\n }\n\n const getErrors = () => {\n return errors\n }\n\n const setError = (key: keyof T, message: string) => {\n errors[key] = message\n hooks.forEach((hook) => hook());\n }\n\n const clearErrors = () => {\n for (let k in errors) {\n delete errors[k]\n }\n hooks.forEach((hook) => hook());\n }\n\n const clearError = (key: keyof T) => {\n delete errors[key]\n hooks.forEach((hook) => hook());\n }\n\n\n return {\n state,\n get,\n set,\n sets,\n delete: _delete,\n clear,\n validate,\n isValid,\n getChanges,\n isChanged,\n getErrors,\n getError,\n setError,\n clearErrors,\n clearError\n }\n }\n\n return useBucket\n}\n\nexport const xv = XV"],"names":["Initial","useId","useState","useEffect","setCookie","XV"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { useEffect, useId, useState } from \"react\"\nimport { Infer, 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 const hooks = new Map<string, Function>()\n const state: Record<keyof T, any> = Initial(initial, option?.data_key || '', option || {}) as Record<keyof T, any>;\n const changes: Record<keyof T, boolean> = {} as any\n const errors: Record<keyof T, string> = {} 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 const get = (key: keyof T, defaultValue?: any) => {\n if (!(key in initial)) {\n throw new Error(`Property ${String(key)} is not defined in the bucket.`)\n }\n let value = state[key];\n if (value === undefined && defaultValue !== undefined) {\n value = defaultValue\n }\n return value;\n }\n\n const set = (key: keyof T, value: any, dispatch = true) => {\n if (!(key in initial)) {\n throw new Error(`Property ${String(key)} is not defined in the bucket.`)\n }\n state[key] = value;\n if (dispatch) {\n hooks.forEach((hook) => hook());\n }\n changes[key] = true\n if (option?.onChange && changes[key]) {\n option.onChange(key 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 }\n\n const sets = (data: Partial<Infer<T>>, dispatch = true) => {\n for (let k in data) {\n let v = data[k]\n set(k, v, false)\n }\n\n if (dispatch) {\n hooks.forEach((hook) => hook());\n }\n }\n\n const _delete = (key: keyof T) => {\n set(key, undefined)\n }\n\n const clear = () => {\n const initVal = Initial(initial, option?.data_key || '', option || {}) as Record<keyof T, any>;\n for (let key in initial) {\n state[key] = initVal[key];\n delete changes[key]\n }\n hooks.forEach((hook) => hook());\n }\n\n const getChanges = () => {\n const changedData: Partial<Record<keyof T, any>> = {}\n for (let k in changes) {\n if (changes[k]) {\n changedData[k] = state[k]\n }\n }\n return changedData\n }\n\n const isChanged = (k: keyof T) => !!changes[k]\n\n const isValid = (key: keyof T) => {\n try {\n initial[key].parse(state[key])\n } catch (error: any) {\n errors[key] = (error as any).message\n }\n hooks.forEach((hook) => hook());\n return !(key in errors)\n }\n\n const validate = () => {\n for (let k in initial) {\n try {\n initial[k].parse(state[k])\n } catch (error: any) {\n errors[k] = (error as any).message\n }\n }\n hooks.forEach((hook) => hook());\n return Object.keys(errors).length === 0\n }\n\n const getError = (key: keyof T) => {\n if (key in errors) {\n return errors[key]\n }\n return ''\n }\n\n const getErrors = () => {\n return errors\n }\n\n const setError = (key: keyof T, message: string) => {\n errors[key] = message\n hooks.forEach((hook) => hook());\n }\n\n const clearErrors = () => {\n for (let k in errors) {\n delete errors[k]\n }\n hooks.forEach((hook) => hook());\n }\n\n const clearError = (key: keyof T) => {\n delete errors[key]\n hooks.forEach((hook) => hook());\n }\n\n\n return {\n state,\n get,\n set,\n sets,\n delete: _delete,\n clear,\n validate,\n isValid,\n getChanges,\n isChanged,\n getErrors,\n getError,\n setError,\n clearErrors,\n clearError\n }\n }\n\n return useBucket\n}\n\nexport const xv = XV"],"names":["XV"],"mappings":"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"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.2.16",
2
+ "version": "1.2.17",
3
3
  "name": "react-state-bucket",
4
4
  "author": "Naxrul Ahmed",
5
5
  "license": "MIT",
@@ -9,17 +9,9 @@
9
9
  },
10
10
  "description": "A lightweight and powerful package designed to manage states globally in React applications. It provides CRUD operations for your state data with ease, enabling developers to handle complex state management scenarios without the need for heavy libraries.",
11
11
  "homepage": "https://github.com/devnax/react-state-bucket#readme",
12
- "main": "./index.js",
13
- "module": "./index.mjs",
12
+ "main": "./index.cjs",
13
+ "module": "./index.js",
14
14
  "types": "./index.d.ts",
15
- "devDependencies": {
16
- "@types/react": "^19.0.2",
17
- "@types/react-dom": "^19.0.2",
18
- "makepack": "^1.7.15",
19
- "react": "^19.0.0",
20
- "react-dom": "^19.0.0",
21
- "typescript": "^5.9.3"
22
- },
23
15
  "keywords": [
24
16
  "react",
25
17
  "state management",
@@ -30,15 +22,8 @@
30
22
  "lightweight",
31
23
  "typescript"
32
24
  ],
33
- "exports": {
34
- ".": {
35
- "import": "./index.mjs",
36
- "require": "./index.js",
37
- "types": "./index.d.ts"
38
- }
39
- },
40
25
  "dependencies": {
41
26
  "xanv": "^1.1.11",
42
27
  "youid": "^1.0.13"
43
28
  }
44
- }
29
+ }
package/Cookie.mjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Cookie.mjs","sources":["../src/Cookie.ts"],"sourcesContent":["export function setCookie(\n key: string,\n value: string,\n days = 7\n) {\n const expires = new Date(Date.now() + days * 864e5).toUTCString();\n document.cookie =\n `${encodeURIComponent(key)}=${encodeURIComponent(value)}; ` +\n `expires=${expires}; path=/; SameSite=Lax`;\n}\n\nexport function getCookie(key: string): string | null {\n const name = encodeURIComponent(key) + \"=\";\n const parts = document.cookie.split(\"; \");\n\n for (const part of parts) {\n if (part.startsWith(name)) {\n return decodeURIComponent(part.slice(name.length));\n }\n }\n\n return null;\n}"],"names":[],"mappings":"AAAM,SAAU,SAAS,CACtB,GAAW,EACX,KAAa,EACb,IAAI,GAAG,CAAC,EAAA;AAER,IAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,WAAW,EAAE;AACjE,IAAA,QAAQ,CAAC,MAAM;QACZ,CAAA,EAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAA,EAAA,CAAI;YAC3D,CAAA,QAAA,EAAW,OAAO,wBAAwB;AAChD;AAEM,SAAU,SAAS,CAAC,GAAW,EAAA;IAClC,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG;IAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAEzC,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YACxB,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD;IACH;AAEA,IAAA,OAAO,IAAI;AACd"}
package/Initial.mjs.map DELETED
@@ -1 +0,0 @@
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.mjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { useEffect, useId, useState } from \"react\"\nimport { Infer, 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 const hooks = new Map<string, Function>()\n const state: Record<keyof T, any> = Initial(initial, option?.data_key || '', option || {}) as Record<keyof T, any>;\n const changes: Record<keyof T, boolean> = {} as any\n const errors: Record<keyof T, string> = {} 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 const get = (key: keyof T, defaultValue?: any) => {\n if (!(key in initial)) {\n throw new Error(`Property ${String(key)} is not defined in the bucket.`)\n }\n let value = state[key];\n if (value === undefined && defaultValue !== undefined) {\n value = defaultValue\n }\n return value;\n }\n\n const set = (key: keyof T, value: any, dispatch = true) => {\n if (!(key in initial)) {\n throw new Error(`Property ${String(key)} is not defined in the bucket.`)\n }\n state[key] = value;\n if (dispatch) {\n hooks.forEach((hook) => hook());\n }\n changes[key] = true\n if (option?.onChange && changes[key]) {\n option.onChange(key 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 }\n\n const sets = (data: Partial<Infer<T>>, dispatch = true) => {\n for (let k in data) {\n let v = data[k]\n set(k, v, false)\n }\n\n if (dispatch) {\n hooks.forEach((hook) => hook());\n }\n }\n\n const _delete = (key: keyof T) => {\n set(key, undefined)\n }\n\n const clear = () => {\n const initVal = Initial(initial, option?.data_key || '', option || {}) as Record<keyof T, any>;\n for (let key in initial) {\n state[key] = initVal[key];\n delete changes[key]\n }\n hooks.forEach((hook) => hook());\n }\n\n const getChanges = () => {\n const changedData: Partial<Record<keyof T, any>> = {}\n for (let k in changes) {\n if (changes[k]) {\n changedData[k] = state[k]\n }\n }\n return changedData\n }\n\n const isChanged = (k: keyof T) => !!changes[k]\n\n const isValid = (key: keyof T) => {\n try {\n initial[key].parse(state[key])\n } catch (error: any) {\n errors[key] = (error as any).message\n }\n hooks.forEach((hook) => hook());\n return !(key in errors)\n }\n\n const validate = () => {\n for (let k in initial) {\n try {\n initial[k].parse(state[k])\n } catch (error: any) {\n errors[k] = (error as any).message\n }\n }\n hooks.forEach((hook) => hook());\n return Object.keys(errors).length === 0\n }\n\n const getError = (key: keyof T) => {\n if (key in errors) {\n return errors[key]\n }\n return ''\n }\n\n const getErrors = () => {\n return errors\n }\n\n const setError = (key: keyof T, message: string) => {\n errors[key] = message\n hooks.forEach((hook) => hook());\n }\n\n const clearErrors = () => {\n for (let k in errors) {\n delete errors[k]\n }\n hooks.forEach((hook) => hook());\n }\n\n const clearError = (key: keyof T) => {\n delete errors[key]\n hooks.forEach((hook) => hook());\n }\n\n\n return {\n state,\n get,\n set,\n sets,\n delete: _delete,\n clear,\n validate,\n isValid,\n getChanges,\n isChanged,\n getErrors,\n getError,\n setError,\n clearErrors,\n clearError\n }\n }\n\n return useBucket\n}\n\nexport const xv = XV"],"names":["XV"],"mappings":"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"}