@koine/browser 2.0.0-alpha.4 → 2.0.0-beta.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/createStorage.d.ts +5 -0
- package/createStorage.js +94 -94
- package/createStorage.mjs +59 -69
- package/getZonedDate.js +28 -33
- package/getZonedDate.mjs +6 -12
- package/gtagPageview.js +33 -27
- package/gtagPageview.mjs +13 -20
- package/index.js +71 -32
- package/isIE.js +23 -15
- package/isIE.mjs +2 -4
- package/isMobile.js +24 -16
- package/isMobile.mjs +3 -5
- package/navigateToHash.js +23 -16
- package/navigateToHash.mjs +2 -4
- package/navigateToHashParams.js +26 -20
- package/navigateToHashParams.mjs +5 -8
- package/navigateToMergedHashParams.js +24 -17
- package/navigateToMergedHashParams.mjs +2 -5
- package/navigateToMergedParams.js +24 -17
- package/navigateToMergedParams.mjs +2 -4
- package/navigateToParams.js +26 -20
- package/navigateToParams.mjs +3 -5
- package/navigateToUrl.js +20 -8
- package/navigateToUrl.mjs +1 -3
- package/navigateWithoutUrlParam.js +25 -17
- package/navigateWithoutUrlParam.mjs +4 -5
- package/package.json +9 -7
- package/redirectTo.js +23 -15
- package/redirectTo.mjs +3 -4
- package/storage.d.ts +2 -0
- package/storage.js +23 -11
- package/storage.mjs +4 -3
- package/storageClient.d.ts +5 -0
- package/storageClient.js +70 -66
- package/storageClient.mjs +43 -49
package/navigateToUrl.js
CHANGED
|
@@ -1,16 +1,28 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.navigateToUrl = void 0;
|
|
4
1
|
/**
|
|
5
2
|
* It updates the browser's location URL with global `history` object
|
|
6
3
|
*
|
|
7
4
|
* @category location
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
*/ "use strict";
|
|
6
|
+
Object.defineProperty(exports, "__esModule", {
|
|
7
|
+
value: true
|
|
8
|
+
});
|
|
9
|
+
function _export(target, all) {
|
|
10
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: all[name]
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
_export(exports, {
|
|
16
|
+
navigateToUrl: function() {
|
|
17
|
+
return navigateToUrl;
|
|
18
|
+
},
|
|
19
|
+
default: function() {
|
|
20
|
+
return _default;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
function navigateToUrl(url = "", replace) {
|
|
11
24
|
if (url) {
|
|
12
25
|
history[replace ? "replaceState" : "pushState"](history.state, "", url);
|
|
13
26
|
}
|
|
14
27
|
}
|
|
15
|
-
|
|
16
|
-
exports.default = navigateToUrl;
|
|
28
|
+
const _default = navigateToUrl;
|
package/navigateToUrl.mjs
CHANGED
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
* It updates the browser's location URL with global `history` object
|
|
3
3
|
*
|
|
4
4
|
* @category location
|
|
5
|
-
*/
|
|
6
|
-
export function navigateToUrl(url, replace) {
|
|
7
|
-
if (url === void 0) { url = ""; }
|
|
5
|
+
*/ export function navigateToUrl(url = "", replace) {
|
|
8
6
|
if (url) {
|
|
9
7
|
history[replace ? "replaceState" : "pushState"](history.state, "", url);
|
|
10
8
|
}
|
|
@@ -1,24 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
navigateWithoutUrlParam: function() {
|
|
13
|
+
return navigateWithoutUrlParam;
|
|
14
|
+
},
|
|
15
|
+
default: function() {
|
|
16
|
+
return _default;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
|
|
20
|
+
const _getUrlQueryParams = /*#__PURE__*/ _interop_require_default._(require("@koine/utils/getUrlQueryParams"));
|
|
21
|
+
const _navigateToParams = /*#__PURE__*/ _interop_require_default._(require("./navigateToParams"));
|
|
13
22
|
function navigateWithoutUrlParam(paramName, replace) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
for
|
|
23
|
+
const params = {};
|
|
24
|
+
const currentParams = (0, _getUrlQueryParams.default)();
|
|
25
|
+
for(const key in currentParams){
|
|
17
26
|
if (key !== paramName) {
|
|
18
27
|
params[key] = currentParams[key];
|
|
19
28
|
}
|
|
20
29
|
}
|
|
21
|
-
return (0,
|
|
30
|
+
return (0, _navigateToParams.default)(params, replace);
|
|
22
31
|
}
|
|
23
|
-
|
|
24
|
-
exports.default = navigateWithoutUrlParam;
|
|
32
|
+
const _default = navigateWithoutUrlParam;
|
|
@@ -5,11 +5,10 @@ import navigateToParams from "./navigateToParams";
|
|
|
5
5
|
*
|
|
6
6
|
* @category location
|
|
7
7
|
* @param replace Replace URL instead of pushing it in the history stack. By default it pushes it.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
for (var key in currentParams) {
|
|
8
|
+
*/ export function navigateWithoutUrlParam(paramName, replace) {
|
|
9
|
+
const params = {};
|
|
10
|
+
const currentParams = getUrlQueryParams();
|
|
11
|
+
for(const key in currentParams){
|
|
13
12
|
if (key !== paramName) {
|
|
14
13
|
params[key] = currentParams[key];
|
|
15
14
|
}
|
package/package.json
CHANGED
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
"name": "@koine/browser",
|
|
3
3
|
"sideEffects": false,
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
"peerDependencies": {
|
|
8
|
-
"tslib": "2.5.3"
|
|
5
|
+
"@koine/dom": "2.0.0-beta.10",
|
|
6
|
+
"@koine/utils": "2.0.0-beta.10"
|
|
9
7
|
},
|
|
8
|
+
"module": "./index.mjs",
|
|
10
9
|
"main": "./index.js",
|
|
11
10
|
"types": "./index.d.ts",
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
"peerDependencies": {
|
|
12
|
+
"date-fns-tz": "^2.0.0",
|
|
13
|
+
"type-fest": "^3.12.0"
|
|
14
|
+
},
|
|
15
|
+
"version": "2.0.0-beta.10"
|
|
16
|
+
}
|
package/redirectTo.js
CHANGED
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
redirectTo: function() {
|
|
13
|
+
return redirectTo;
|
|
14
|
+
},
|
|
15
|
+
default: function() {
|
|
16
|
+
return _default;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
|
|
20
|
+
const _buildUrlQueryString = /*#__PURE__*/ _interop_require_default._(require("@koine/utils/buildUrlQueryString"));
|
|
21
|
+
const _isBrowser = /*#__PURE__*/ _interop_require_default._(require("@koine/utils/isBrowser"));
|
|
13
22
|
function redirectTo(url, params) {
|
|
14
|
-
if (
|
|
15
|
-
|
|
23
|
+
if (_isBrowser.default) {
|
|
24
|
+
const queryString = (0, _buildUrlQueryString.default)(params);
|
|
16
25
|
location.href = url.replace(/\?+$/g, "") + queryString;
|
|
17
26
|
}
|
|
18
27
|
}
|
|
19
|
-
|
|
20
|
-
exports.default = redirectTo;
|
|
28
|
+
const _default = redirectTo;
|
package/redirectTo.mjs
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import isBrowser from "@koine/utils/isBrowser";
|
|
2
1
|
import buildUrlQueryString from "@koine/utils/buildUrlQueryString";
|
|
2
|
+
import isBrowser from "@koine/utils/isBrowser";
|
|
3
3
|
/**
|
|
4
4
|
* Redirect to url with params {optionally}, removes eventual trailing question
|
|
5
5
|
* marks from the given URL, it uses `location`
|
|
6
6
|
*
|
|
7
7
|
* @category location
|
|
8
|
-
*/
|
|
9
|
-
export function redirectTo(url, params) {
|
|
8
|
+
*/ export function redirectTo(url, params) {
|
|
10
9
|
if (isBrowser) {
|
|
11
|
-
|
|
10
|
+
const queryString = buildUrlQueryString(params);
|
|
12
11
|
location.href = url.replace(/\?+$/g, "") + queryString;
|
|
13
12
|
}
|
|
14
13
|
}
|
package/storage.d.ts
CHANGED
package/storage.js
CHANGED
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
storage: function() {
|
|
13
|
+
return storage;
|
|
14
|
+
},
|
|
15
|
+
default: function() {
|
|
16
|
+
return _default;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
|
|
20
|
+
const _storageClient = /*#__PURE__*/ _interop_require_default._(require("./storageClient"));
|
|
21
|
+
const storage = {
|
|
22
|
+
l: (0, _storageClient.default)(),
|
|
23
|
+
s: (0, _storageClient.default)(true)
|
|
12
24
|
};
|
|
13
|
-
|
|
25
|
+
const _default = storage;
|
package/storage.mjs
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import storageClient from "./storageClient";
|
|
2
2
|
/**
|
|
3
3
|
* Storage, for `localStorage` and `sessionStorage`
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
*
|
|
5
|
+
* @category storage
|
|
6
|
+
*/ export const storage = {
|
|
6
7
|
l: storageClient(),
|
|
7
|
-
s: storageClient(true)
|
|
8
|
+
s: storageClient(true)
|
|
8
9
|
};
|
|
9
10
|
export default storage;
|
package/storageClient.d.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @category storage
|
|
3
|
+
*/
|
|
1
4
|
export type StorageClientConfig = Record<string, any>;
|
|
2
5
|
/**
|
|
3
6
|
* Super minifiable `local/session Storage` client creator with SSR safety
|
|
7
|
+
*
|
|
8
|
+
* @category storage
|
|
4
9
|
*/
|
|
5
10
|
export declare const storageClient: <TConfig extends StorageClientConfig = StorageClientConfig>(useSessionStorage?: boolean) => {
|
|
6
11
|
get: <TKey extends Extract<keyof TConfig, string>, TValue = TConfig[TKey]>(key: TKey, transform?: ((value: string) => TValue) | undefined, defaultValue?: TValue | null | undefined) => NonNullable<TValue> | null;
|
package/storageClient.js
CHANGED
|
@@ -1,108 +1,112 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
storageClient: function() {
|
|
13
|
+
return storageClient;
|
|
14
|
+
},
|
|
15
|
+
default: function() {
|
|
16
|
+
return _default;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
|
|
20
|
+
const _isBrowser = /*#__PURE__*/ _interop_require_default._(require("@koine/utils/isBrowser"));
|
|
21
|
+
const _isString = /*#__PURE__*/ _interop_require_default._(require("@koine/utils/isString"));
|
|
22
|
+
const methodsMap = {
|
|
23
|
+
g: "getItem",
|
|
24
|
+
s: "setItem",
|
|
25
|
+
r: "removeItem"
|
|
26
|
+
};
|
|
27
|
+
const storageClient = (useSessionStorage)=>{
|
|
28
|
+
const nativeMethod = (method, key, value)=>_isBrowser.default ? window[useSessionStorage ? "sessionStorage" : "localStorage"][methodsMap[method]](key, value) : ()=>{
|
|
29
|
+
if (process.env["NODE_ENV"] !== "production") {
|
|
30
|
+
console.warn(`[@koine/utils:storageClient]: ${useSessionStorage ? "sessionStorage" : "localStorage"} does not exists outside of browser.`);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const get = (key, transform, defaultValue)=>{
|
|
34
|
+
let value = defaultValue ?? null;
|
|
23
35
|
if (process.env["NODE_ENV"] !== "production") {
|
|
24
|
-
if (!
|
|
25
|
-
console.log(
|
|
36
|
+
if (!_isBrowser.default) {
|
|
37
|
+
console.log(`[@koine/utils:storage] called 'get' outside of browser with default value '${JSON.stringify(defaultValue)}'.`);
|
|
26
38
|
}
|
|
27
39
|
}
|
|
28
|
-
if (
|
|
29
|
-
|
|
40
|
+
if (_isBrowser.default) {
|
|
41
|
+
let stored = nativeMethod("g", key);
|
|
30
42
|
if (stored) {
|
|
31
43
|
stored = transform ? transform(stored) : stored;
|
|
32
44
|
try {
|
|
33
|
-
|
|
34
|
-
if (parsed)
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
catch (_e) {
|
|
45
|
+
const parsed = JSON.parse(stored);
|
|
46
|
+
if (parsed) value = parsed;
|
|
47
|
+
} catch (_e) {
|
|
38
48
|
value = stored;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
49
|
+
// if (process.env["NODE_ENV"] !== "production") {
|
|
50
|
+
// console.warn(
|
|
51
|
+
// `[@koine/utils:storage]: 'get' failed to parse stored value as JSON. Plain '${stored}' value is returned.`
|
|
52
|
+
// );
|
|
53
|
+
// }
|
|
44
54
|
}
|
|
45
55
|
}
|
|
46
56
|
}
|
|
47
57
|
return value;
|
|
48
58
|
};
|
|
49
|
-
|
|
50
|
-
if (transform === void 0) { transform = function (value) { return value; }; }
|
|
59
|
+
const set = (key, value, transform = (value)=>value)=>{
|
|
51
60
|
if (process.env["NODE_ENV"] !== "production") {
|
|
52
|
-
if (!
|
|
53
|
-
console.log(
|
|
61
|
+
if (!_isBrowser.default) {
|
|
62
|
+
console.log(`[@koine/utils:storage] called 'set' outside of browser does not work.`);
|
|
54
63
|
}
|
|
55
64
|
}
|
|
56
|
-
if (
|
|
65
|
+
if (_isBrowser.default) {
|
|
57
66
|
try {
|
|
58
|
-
|
|
59
|
-
? transform(value)
|
|
60
|
-
: transform(JSON.stringify(value));
|
|
67
|
+
const transformedValue = (0, _isString.default)(value) ? transform(value) : transform(JSON.stringify(value));
|
|
61
68
|
nativeMethod("s", key, transformedValue);
|
|
62
|
-
}
|
|
63
|
-
catch (_e) {
|
|
69
|
+
} catch (_e) {
|
|
64
70
|
if (process.env["NODE_ENV"] !== "production") {
|
|
65
|
-
console.warn(
|
|
71
|
+
console.warn(`[@koine/utils:createStorage]: 'set' error.`, _e);
|
|
66
72
|
}
|
|
67
73
|
}
|
|
68
74
|
}
|
|
69
75
|
};
|
|
70
|
-
|
|
76
|
+
const remove = (key)=>{
|
|
71
77
|
if (process.env["NODE_ENV"] !== "production") {
|
|
72
|
-
if (!
|
|
73
|
-
console.log(
|
|
78
|
+
if (!_isBrowser.default) {
|
|
79
|
+
console.log(`[@koine/utils:storage] called 'remove' outside of browser does not work.`);
|
|
74
80
|
}
|
|
75
81
|
}
|
|
76
|
-
if (
|
|
82
|
+
if (_isBrowser.default) {
|
|
77
83
|
try {
|
|
78
84
|
nativeMethod("r", key);
|
|
79
|
-
}
|
|
80
|
-
catch (_e) {
|
|
85
|
+
} catch (_e) {
|
|
81
86
|
if (process.env["NODE_ENV"] !== "production") {
|
|
82
|
-
console.warn(
|
|
87
|
+
console.warn(`[@koine/utils:createStorage]: 'remove' error.`, _e);
|
|
83
88
|
}
|
|
84
89
|
}
|
|
85
90
|
}
|
|
86
91
|
};
|
|
87
|
-
|
|
88
|
-
|
|
92
|
+
const has = (key, defaultValue)=>{
|
|
93
|
+
let value = defaultValue ?? false;
|
|
89
94
|
if (process.env["NODE_ENV"] !== "production") {
|
|
90
|
-
if (!
|
|
91
|
-
console.log(
|
|
95
|
+
if (!_isBrowser.default) {
|
|
96
|
+
console.log(`[@koine/utils:storage] called 'has' outside of browser with default value '${JSON.stringify(defaultValue)}'.`);
|
|
92
97
|
}
|
|
93
98
|
}
|
|
94
|
-
if (
|
|
95
|
-
|
|
96
|
-
value = stored
|
|
99
|
+
if (_isBrowser.default) {
|
|
100
|
+
const stored = nativeMethod("g", key);
|
|
101
|
+
value = stored ?? false;
|
|
97
102
|
}
|
|
98
103
|
return value;
|
|
99
104
|
};
|
|
100
105
|
return {
|
|
101
|
-
get
|
|
102
|
-
set
|
|
103
|
-
remove
|
|
104
|
-
has
|
|
106
|
+
get,
|
|
107
|
+
set,
|
|
108
|
+
remove,
|
|
109
|
+
has
|
|
105
110
|
};
|
|
106
111
|
};
|
|
107
|
-
|
|
108
|
-
exports.default = exports.storageClient;
|
|
112
|
+
const _default = storageClient;
|
package/storageClient.mjs
CHANGED
|
@@ -1,103 +1,97 @@
|
|
|
1
1
|
import isBrowser from "@koine/utils/isBrowser";
|
|
2
2
|
import isString from "@koine/utils/isString";
|
|
3
|
-
|
|
3
|
+
const methodsMap = {
|
|
4
|
+
g: "getItem",
|
|
5
|
+
s: "setItem",
|
|
6
|
+
r: "removeItem"
|
|
7
|
+
};
|
|
4
8
|
/**
|
|
5
9
|
* Super minifiable `local/session Storage` client creator with SSR safety
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
};
|
|
17
|
-
var get = function (key, transform, defaultValue) {
|
|
18
|
-
var value = defaultValue !== null && defaultValue !== void 0 ? defaultValue : null;
|
|
10
|
+
*
|
|
11
|
+
* @category storage
|
|
12
|
+
*/ export const storageClient = (useSessionStorage)=>{
|
|
13
|
+
const nativeMethod = (method, key, value)=>isBrowser ? window[useSessionStorage ? "sessionStorage" : "localStorage"][methodsMap[method]](key, value) : ()=>{
|
|
14
|
+
if (process.env["NODE_ENV"] !== "production") {
|
|
15
|
+
console.warn(`[@koine/utils:storageClient]: ${useSessionStorage ? "sessionStorage" : "localStorage"} does not exists outside of browser.`);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
const get = (key, transform, defaultValue)=>{
|
|
19
|
+
let value = defaultValue ?? null;
|
|
19
20
|
if (process.env["NODE_ENV"] !== "production") {
|
|
20
21
|
if (!isBrowser) {
|
|
21
|
-
console.log(
|
|
22
|
+
console.log(`[@koine/utils:storage] called 'get' outside of browser with default value '${JSON.stringify(defaultValue)}'.`);
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
25
|
if (isBrowser) {
|
|
25
|
-
|
|
26
|
+
let stored = nativeMethod("g", key);
|
|
26
27
|
if (stored) {
|
|
27
28
|
stored = transform ? transform(stored) : stored;
|
|
28
29
|
try {
|
|
29
|
-
|
|
30
|
-
if (parsed)
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
catch (_e) {
|
|
30
|
+
const parsed = JSON.parse(stored);
|
|
31
|
+
if (parsed) value = parsed;
|
|
32
|
+
} catch (_e) {
|
|
34
33
|
value = stored;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
// if (process.env["NODE_ENV"] !== "production") {
|
|
35
|
+
// console.warn(
|
|
36
|
+
// `[@koine/utils:storage]: 'get' failed to parse stored value as JSON. Plain '${stored}' value is returned.`
|
|
37
|
+
// );
|
|
38
|
+
// }
|
|
40
39
|
}
|
|
41
40
|
}
|
|
42
41
|
}
|
|
43
42
|
return value;
|
|
44
43
|
};
|
|
45
|
-
|
|
46
|
-
if (transform === void 0) { transform = function (value) { return value; }; }
|
|
44
|
+
const set = (key, value, transform = (value)=>value)=>{
|
|
47
45
|
if (process.env["NODE_ENV"] !== "production") {
|
|
48
46
|
if (!isBrowser) {
|
|
49
|
-
console.log(
|
|
47
|
+
console.log(`[@koine/utils:storage] called 'set' outside of browser does not work.`);
|
|
50
48
|
}
|
|
51
49
|
}
|
|
52
50
|
if (isBrowser) {
|
|
53
51
|
try {
|
|
54
|
-
|
|
55
|
-
? transform(value)
|
|
56
|
-
: transform(JSON.stringify(value));
|
|
52
|
+
const transformedValue = isString(value) ? transform(value) : transform(JSON.stringify(value));
|
|
57
53
|
nativeMethod("s", key, transformedValue);
|
|
58
|
-
}
|
|
59
|
-
catch (_e) {
|
|
54
|
+
} catch (_e) {
|
|
60
55
|
if (process.env["NODE_ENV"] !== "production") {
|
|
61
|
-
console.warn(
|
|
56
|
+
console.warn(`[@koine/utils:createStorage]: 'set' error.`, _e);
|
|
62
57
|
}
|
|
63
58
|
}
|
|
64
59
|
}
|
|
65
60
|
};
|
|
66
|
-
|
|
61
|
+
const remove = (key)=>{
|
|
67
62
|
if (process.env["NODE_ENV"] !== "production") {
|
|
68
63
|
if (!isBrowser) {
|
|
69
|
-
console.log(
|
|
64
|
+
console.log(`[@koine/utils:storage] called 'remove' outside of browser does not work.`);
|
|
70
65
|
}
|
|
71
66
|
}
|
|
72
67
|
if (isBrowser) {
|
|
73
68
|
try {
|
|
74
69
|
nativeMethod("r", key);
|
|
75
|
-
}
|
|
76
|
-
catch (_e) {
|
|
70
|
+
} catch (_e) {
|
|
77
71
|
if (process.env["NODE_ENV"] !== "production") {
|
|
78
|
-
console.warn(
|
|
72
|
+
console.warn(`[@koine/utils:createStorage]: 'remove' error.`, _e);
|
|
79
73
|
}
|
|
80
74
|
}
|
|
81
75
|
}
|
|
82
76
|
};
|
|
83
|
-
|
|
84
|
-
|
|
77
|
+
const has = (key, defaultValue)=>{
|
|
78
|
+
let value = defaultValue ?? false;
|
|
85
79
|
if (process.env["NODE_ENV"] !== "production") {
|
|
86
80
|
if (!isBrowser) {
|
|
87
|
-
console.log(
|
|
81
|
+
console.log(`[@koine/utils:storage] called 'has' outside of browser with default value '${JSON.stringify(defaultValue)}'.`);
|
|
88
82
|
}
|
|
89
83
|
}
|
|
90
84
|
if (isBrowser) {
|
|
91
|
-
|
|
92
|
-
value = stored
|
|
85
|
+
const stored = nativeMethod("g", key);
|
|
86
|
+
value = stored ?? false;
|
|
93
87
|
}
|
|
94
88
|
return value;
|
|
95
89
|
};
|
|
96
90
|
return {
|
|
97
|
-
get
|
|
98
|
-
set
|
|
99
|
-
remove
|
|
100
|
-
has
|
|
91
|
+
get,
|
|
92
|
+
set,
|
|
93
|
+
remove,
|
|
94
|
+
has
|
|
101
95
|
};
|
|
102
96
|
};
|
|
103
97
|
export default storageClient;
|