@koine/browser 2.0.0-beta.80 → 2.0.0-beta.83

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,93 +1,16 @@
1
1
  import { isBrowser, isString } from '@koine/utils';
2
2
 
3
- const methodsMap = { g: "getItem", s: "setItem", r: "removeItem" };
4
- let storageClient = (useSessionStorage) => {
5
- const nativeMethod = (method, key, value) => isBrowser
6
- ? window[useSessionStorage ? "sessionStorage" : "localStorage"][methodsMap[method]](key, value)
7
- : () => {
8
- if (process.env["NODE_ENV"] === "development") {
9
- console.warn(`[@koine/utils:storageClient]: ${useSessionStorage ? "sessionStorage" : "localStorage"} does not exists outside of browser.`);
10
- }
11
- };
12
- const get = (key, transform, defaultValue) => {
13
- let value = defaultValue ?? null;
14
- if (process.env["NODE_ENV"] === "development") {
15
- if (!isBrowser) {
16
- console.log(`[@koine/utils:storage] called 'get' outside of browser with default value '${JSON.stringify(defaultValue)}'.`);
17
- }
18
- }
19
- if (isBrowser) {
20
- let stored = nativeMethod("g", key);
21
- if (stored) {
22
- stored = transform ? transform(stored) : stored;
23
- try {
24
- const parsed = JSON.parse(stored);
25
- if (parsed)
26
- value = parsed;
27
- }
28
- catch (_e) {
29
- value = stored;
30
- }
31
- }
32
- }
33
- return value;
34
- };
35
- const set = (key, value, transform = (value) => value) => {
36
- if (process.env["NODE_ENV"] === "development") {
37
- if (!isBrowser) {
38
- console.log(`[@koine/utils:storage] called 'set' outside of browser does not work.`);
39
- }
40
- }
41
- if (isBrowser) {
42
- try {
43
- const transformedValue = isString(value)
44
- ? transform(value)
45
- : transform(JSON.stringify(value));
46
- nativeMethod("s", key, transformedValue);
47
- }
48
- catch (_e) {
49
- if (process.env["NODE_ENV"] === "development") {
50
- console.warn(`[@koine/utils:createStorage]: 'set' error.`, _e);
51
- }
52
- }
53
- }
54
- };
55
- const remove = (key) => {
56
- if (process.env["NODE_ENV"] === "development") {
57
- if (!isBrowser) {
58
- console.log(`[@koine/utils:storage] called 'remove' outside of browser does not work.`);
59
- }
60
- }
61
- if (isBrowser) {
62
- try {
63
- nativeMethod("r", key);
64
- }
65
- catch (_e) {
66
- if (process.env["NODE_ENV"] === "development") {
67
- console.warn(`[@koine/utils:createStorage]: 'remove' error.`, _e);
68
- }
69
- }
70
- }
71
- };
72
- const has = (key, defaultValue) => {
73
- let value = defaultValue ?? false;
74
- if (process.env["NODE_ENV"] === "development") {
75
- if (!isBrowser) {
76
- console.log(`[@koine/utils:storage] called 'has' outside of browser with default value '${JSON.stringify(defaultValue)}'.`);
77
- }
78
- }
79
- if (isBrowser) {
80
- const stored = nativeMethod("g", key);
81
- value = stored ?? false;
82
- }
83
- return value;
84
- };
85
- return {
86
- get,
87
- set,
88
- remove,
89
- has,
90
- };
91
- };
3
+ /**
4
+ * @category storage
5
+ */let t={g:"getItem",s:"setItem",r:"removeItem"};/**
6
+ * Super minifiable `local/session Storage` client creator with SSR safety
7
+ *
8
+ * @category storage
9
+ */let storageClient=s=>{let r=(o,r,l)=>isBrowser?window[s?"sessionStorage":"localStorage"][t[o]](r,l):()=>{"development"===process.env.NODE_ENV&&console.warn(`[@koine/utils:storageClient]: ${s?"sessionStorage":"localStorage"} does not exists outside of browser.`);};return {get:(o,t,s)=>{let l=s??null;if("development"!==process.env.NODE_ENV||isBrowser||console.log(`[@koine/utils:storage] called 'get' outside of browser with default value '${JSON.stringify(s)}'.`),isBrowser){let e=r("g",o);if(e){e=t?t(e):e;try{let o=JSON.parse(e);o&&(l=o);}catch(o){l=e;}}}// if (process.env["NODE_ENV"] === "development") {
10
+ // console.warn(
11
+ // `[@koine/utils:storage]: 'get' failed to parse stored value as JSON. Plain '${stored}' value is returned.`
12
+ // );
13
+ // }
14
+ return l},set:(t,s,l=e=>e)=>{if("development"!==process.env.NODE_ENV||isBrowser||console.log("[@koine/utils:storage] called 'set' outside of browser does not work."),isBrowser)try{let e=l(isString(s)?s:JSON.stringify(s));r("s",t,e);}catch(e){"development"===process.env.NODE_ENV&&console.warn("[@koine/utils:createStorage]: 'set' error.",e);}},remove:o=>{if("development"!==process.env.NODE_ENV||isBrowser||console.log("[@koine/utils:storage] called 'remove' outside of browser does not work."),isBrowser)try{r("r",o);}catch(e){"development"===process.env.NODE_ENV&&console.warn("[@koine/utils:createStorage]: 'remove' error.",e);}},has:(o,t)=>{let s=t??!1;return "development"!==process.env.NODE_ENV||isBrowser||console.log(`[@koine/utils:storage] called 'has' outside of browser with default value '${JSON.stringify(t)}'.`),isBrowser&&(s=r("g",o)??!1),s}}};
92
15
 
93
16
  export { storageClient as default, storageClient };