@koine/browser 2.0.0-beta.2 → 2.0.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/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
- function navigateToUrl(url, replace) {
10
- if (url === void 0) { url = ""; }
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
- exports.navigateToUrl = navigateToUrl;
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", { value: true });
3
- exports.navigateWithoutUrlParam = void 0;
4
- var tslib_1 = require("tslib");
5
- var getUrlQueryParams_1 = tslib_1.__importDefault(require("@koine/utils/getUrlQueryParams"));
6
- var navigateToParams_1 = tslib_1.__importDefault(require("./navigateToParams"));
7
- /**
8
- * Remove URL query parameter, it uses `history`
9
- *
10
- * @category location
11
- * @param replace Replace URL instead of pushing it in the history stack. By default it pushes it.
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
- var params = {};
15
- var currentParams = (0, getUrlQueryParams_1.default)();
16
- for (var key in currentParams) {
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, navigateToParams_1.default)(params, replace);
30
+ return (0, _navigateToParams.default)(params, replace);
22
31
  }
23
- exports.navigateWithoutUrlParam = navigateWithoutUrlParam;
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
- export function navigateWithoutUrlParam(paramName, replace) {
10
- var params = {};
11
- var currentParams = getUrlQueryParams();
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,18 +2,20 @@
2
2
  "name": "@koine/browser",
3
3
  "sideEffects": false,
4
4
  "dependencies": {
5
- "clsx": "1.2.1",
5
+ "clsx": "^1.2.1",
6
6
  "date-fns-tz": "^2.0.0",
7
7
  "ts-debounce": "^4.0.0",
8
- "type-fest": "^3.11.1"
9
- },
10
- "peerDependencies": {
11
- "@koine/dom": "2.0.0-beta.2",
12
- "@koine/utils": "2.0.0-beta.2",
13
- "tslib": "2.5.3"
8
+ "type-fest": "^3.12.0"
14
9
  },
10
+ "peerDependencies": {},
11
+ "module": "./index.mjs",
15
12
  "main": "./index.js",
13
+ "exports": {
14
+ ".": {
15
+ "import": "./index.js",
16
+ "require": "./index.js"
17
+ }
18
+ },
16
19
  "types": "./index.d.ts",
17
- "version": "2.0.0-beta.2",
18
- "module": "./index.mjs"
19
- }
20
+ "version": "2.0.0-beta.4"
21
+ }
package/redirectTo.js CHANGED
@@ -1,20 +1,28 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.redirectTo = void 0;
4
- var tslib_1 = require("tslib");
5
- var isBrowser_1 = tslib_1.__importDefault(require("@koine/utils/isBrowser"));
6
- var buildUrlQueryString_1 = tslib_1.__importDefault(require("@koine/utils/buildUrlQueryString"));
7
- /**
8
- * Redirect to url with params {optionally}, removes eventual trailing question
9
- * marks from the given URL, it uses `location`
10
- *
11
- * @category location
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 (isBrowser_1.default) {
15
- var queryString = (0, buildUrlQueryString_1.default)(params);
23
+ if (_isBrowser.default) {
24
+ const queryString = (0, _buildUrlQueryString.default)(params);
16
25
  location.href = url.replace(/\?+$/g, "") + queryString;
17
26
  }
18
27
  }
19
- exports.redirectTo = redirectTo;
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
- var queryString = buildUrlQueryString(params);
10
+ const queryString = buildUrlQueryString(params);
12
11
  location.href = url.replace(/\?+$/g, "") + queryString;
13
12
  }
14
13
  }
package/storage.js CHANGED
@@ -1,13 +1,25 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.storage = void 0;
4
- var tslib_1 = require("tslib");
5
- var storageClient_1 = tslib_1.__importDefault(require("./storageClient"));
6
- /**
7
- * Storage, for `localStorage` and `sessionStorage`
8
- */
9
- exports.storage = {
10
- l: (0, storageClient_1.default)(),
11
- s: (0, storageClient_1.default)(true),
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
- exports.default = exports.storage;
25
+ const _default = storage;
package/storage.mjs CHANGED
@@ -1,9 +1,8 @@
1
1
  import storageClient from "./storageClient";
2
2
  /**
3
3
  * Storage, for `localStorage` and `sessionStorage`
4
- */
5
- export var storage = {
4
+ */ export const storage = {
6
5
  l: storageClient(),
7
- s: storageClient(true),
6
+ s: storageClient(true)
8
7
  };
9
8
  export default storage;
package/storageClient.js CHANGED
@@ -1,108 +1,112 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.storageClient = void 0;
4
- var tslib_1 = require("tslib");
5
- var isBrowser_1 = tslib_1.__importDefault(require("@koine/utils/isBrowser"));
6
- var isString_1 = tslib_1.__importDefault(require("@koine/utils/isString"));
7
- var methodsMap = { g: "getItem", s: "setItem", r: "removeItem" };
8
- /**
9
- * Super minifiable `local/session Storage` client creator with SSR safety
10
- */
11
- var storageClient = function (useSessionStorage) {
12
- var nativeMethod = function (method, key, value) {
13
- return isBrowser_1.default
14
- ? window[useSessionStorage ? "sessionStorage" : "localStorage"][methodsMap[method]](key, value)
15
- : function () {
16
- if (process.env["NODE_ENV"] !== "production") {
17
- console.warn("[@koine/utils:storageClient]: ".concat(useSessionStorage ? "sessionStorage" : "localStorage", " does not exists outside of browser."));
18
- }
19
- };
20
- };
21
- var get = function (key, transform, defaultValue) {
22
- var value = defaultValue !== null && defaultValue !== void 0 ? defaultValue : null;
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 (!isBrowser_1.default) {
25
- console.log("[@koine/utils:storage] called 'get' outside of browser with default value '".concat(JSON.stringify(defaultValue), "'."));
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 (isBrowser_1.default) {
29
- var stored = nativeMethod("g", key);
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
- var parsed = JSON.parse(stored);
34
- if (parsed)
35
- value = parsed;
36
- }
37
- catch (_e) {
45
+ const parsed = JSON.parse(stored);
46
+ if (parsed) value = parsed;
47
+ } catch (_e) {
38
48
  value = stored;
39
- // if (process.env["NODE_ENV"] !== "production") {
40
- // console.warn(
41
- // `[@koine/utils:storage]: 'get' failed to parse stored value as JSON. Plain '${stored}' value is returned.`
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
- var set = function (key, value, transform) {
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 (!isBrowser_1.default) {
53
- console.log("[@koine/utils:storage] called 'set' outside of browser does not work.");
61
+ if (!_isBrowser.default) {
62
+ console.log(`[@koine/utils:storage] called 'set' outside of browser does not work.`);
54
63
  }
55
64
  }
56
- if (isBrowser_1.default) {
65
+ if (_isBrowser.default) {
57
66
  try {
58
- var transformedValue = (0, isString_1.default)(value)
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("[@koine/utils:createStorage]: 'set' error.", _e);
71
+ console.warn(`[@koine/utils:createStorage]: 'set' error.`, _e);
66
72
  }
67
73
  }
68
74
  }
69
75
  };
70
- var remove = function (key) {
76
+ const remove = (key)=>{
71
77
  if (process.env["NODE_ENV"] !== "production") {
72
- if (!isBrowser_1.default) {
73
- console.log("[@koine/utils:storage] called 'remove' outside of browser does not work.");
78
+ if (!_isBrowser.default) {
79
+ console.log(`[@koine/utils:storage] called 'remove' outside of browser does not work.`);
74
80
  }
75
81
  }
76
- if (isBrowser_1.default) {
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("[@koine/utils:createStorage]: 'remove' error.", _e);
87
+ console.warn(`[@koine/utils:createStorage]: 'remove' error.`, _e);
83
88
  }
84
89
  }
85
90
  }
86
91
  };
87
- var has = function (key, defaultValue) {
88
- var value = defaultValue !== null && defaultValue !== void 0 ? defaultValue : false;
92
+ const has = (key, defaultValue)=>{
93
+ let value = defaultValue ?? false;
89
94
  if (process.env["NODE_ENV"] !== "production") {
90
- if (!isBrowser_1.default) {
91
- console.log("[@koine/utils:storage] called 'has' outside of browser with default value '".concat(JSON.stringify(defaultValue), "'."));
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 (isBrowser_1.default) {
95
- var stored = nativeMethod("g", key);
96
- value = stored !== null && stored !== void 0 ? stored : false;
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: get,
102
- set: set,
103
- remove: remove,
104
- has: has,
106
+ get,
107
+ set,
108
+ remove,
109
+ has
105
110
  };
106
111
  };
107
- exports.storageClient = storageClient;
108
- exports.default = exports.storageClient;
112
+ const _default = storageClient;
package/storageClient.mjs CHANGED
@@ -1,103 +1,95 @@
1
1
  import isBrowser from "@koine/utils/isBrowser";
2
2
  import isString from "@koine/utils/isString";
3
- var methodsMap = { g: "getItem", s: "setItem", r: "removeItem" };
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
- export var storageClient = function (useSessionStorage) {
8
- var nativeMethod = function (method, key, value) {
9
- return isBrowser
10
- ? window[useSessionStorage ? "sessionStorage" : "localStorage"][methodsMap[method]](key, value)
11
- : function () {
12
- if (process.env["NODE_ENV"] !== "production") {
13
- console.warn("[@koine/utils:storageClient]: ".concat(useSessionStorage ? "sessionStorage" : "localStorage", " does not exists outside of browser."));
14
- }
15
- };
16
- };
17
- var get = function (key, transform, defaultValue) {
18
- var value = defaultValue !== null && defaultValue !== void 0 ? defaultValue : null;
10
+ */ export const storageClient = (useSessionStorage)=>{
11
+ const nativeMethod = (method, key, value)=>isBrowser ? window[useSessionStorage ? "sessionStorage" : "localStorage"][methodsMap[method]](key, value) : ()=>{
12
+ if (process.env["NODE_ENV"] !== "production") {
13
+ console.warn(`[@koine/utils:storageClient]: ${useSessionStorage ? "sessionStorage" : "localStorage"} does not exists outside of browser.`);
14
+ }
15
+ };
16
+ const get = (key, transform, defaultValue)=>{
17
+ let value = defaultValue ?? null;
19
18
  if (process.env["NODE_ENV"] !== "production") {
20
19
  if (!isBrowser) {
21
- console.log("[@koine/utils:storage] called 'get' outside of browser with default value '".concat(JSON.stringify(defaultValue), "'."));
20
+ console.log(`[@koine/utils:storage] called 'get' outside of browser with default value '${JSON.stringify(defaultValue)}'.`);
22
21
  }
23
22
  }
24
23
  if (isBrowser) {
25
- var stored = nativeMethod("g", key);
24
+ let stored = nativeMethod("g", key);
26
25
  if (stored) {
27
26
  stored = transform ? transform(stored) : stored;
28
27
  try {
29
- var parsed = JSON.parse(stored);
30
- if (parsed)
31
- value = parsed;
32
- }
33
- catch (_e) {
28
+ const parsed = JSON.parse(stored);
29
+ if (parsed) value = parsed;
30
+ } catch (_e) {
34
31
  value = stored;
35
- // if (process.env["NODE_ENV"] !== "production") {
36
- // console.warn(
37
- // `[@koine/utils:storage]: 'get' failed to parse stored value as JSON. Plain '${stored}' value is returned.`
38
- // );
39
- // }
32
+ // if (process.env["NODE_ENV"] !== "production") {
33
+ // console.warn(
34
+ // `[@koine/utils:storage]: 'get' failed to parse stored value as JSON. Plain '${stored}' value is returned.`
35
+ // );
36
+ // }
40
37
  }
41
38
  }
42
39
  }
43
40
  return value;
44
41
  };
45
- var set = function (key, value, transform) {
46
- if (transform === void 0) { transform = function (value) { return value; }; }
42
+ const set = (key, value, transform = (value)=>value)=>{
47
43
  if (process.env["NODE_ENV"] !== "production") {
48
44
  if (!isBrowser) {
49
- console.log("[@koine/utils:storage] called 'set' outside of browser does not work.");
45
+ console.log(`[@koine/utils:storage] called 'set' outside of browser does not work.`);
50
46
  }
51
47
  }
52
48
  if (isBrowser) {
53
49
  try {
54
- var transformedValue = isString(value)
55
- ? transform(value)
56
- : transform(JSON.stringify(value));
50
+ const transformedValue = isString(value) ? transform(value) : transform(JSON.stringify(value));
57
51
  nativeMethod("s", key, transformedValue);
58
- }
59
- catch (_e) {
52
+ } catch (_e) {
60
53
  if (process.env["NODE_ENV"] !== "production") {
61
- console.warn("[@koine/utils:createStorage]: 'set' error.", _e);
54
+ console.warn(`[@koine/utils:createStorage]: 'set' error.`, _e);
62
55
  }
63
56
  }
64
57
  }
65
58
  };
66
- var remove = function (key) {
59
+ const remove = (key)=>{
67
60
  if (process.env["NODE_ENV"] !== "production") {
68
61
  if (!isBrowser) {
69
- console.log("[@koine/utils:storage] called 'remove' outside of browser does not work.");
62
+ console.log(`[@koine/utils:storage] called 'remove' outside of browser does not work.`);
70
63
  }
71
64
  }
72
65
  if (isBrowser) {
73
66
  try {
74
67
  nativeMethod("r", key);
75
- }
76
- catch (_e) {
68
+ } catch (_e) {
77
69
  if (process.env["NODE_ENV"] !== "production") {
78
- console.warn("[@koine/utils:createStorage]: 'remove' error.", _e);
70
+ console.warn(`[@koine/utils:createStorage]: 'remove' error.`, _e);
79
71
  }
80
72
  }
81
73
  }
82
74
  };
83
- var has = function (key, defaultValue) {
84
- var value = defaultValue !== null && defaultValue !== void 0 ? defaultValue : false;
75
+ const has = (key, defaultValue)=>{
76
+ let value = defaultValue ?? false;
85
77
  if (process.env["NODE_ENV"] !== "production") {
86
78
  if (!isBrowser) {
87
- console.log("[@koine/utils:storage] called 'has' outside of browser with default value '".concat(JSON.stringify(defaultValue), "'."));
79
+ console.log(`[@koine/utils:storage] called 'has' outside of browser with default value '${JSON.stringify(defaultValue)}'.`);
88
80
  }
89
81
  }
90
82
  if (isBrowser) {
91
- var stored = nativeMethod("g", key);
92
- value = stored !== null && stored !== void 0 ? stored : false;
83
+ const stored = nativeMethod("g", key);
84
+ value = stored ?? false;
93
85
  }
94
86
  return value;
95
87
  };
96
88
  return {
97
- get: get,
98
- set: set,
99
- remove: remove,
100
- has: has,
89
+ get,
90
+ set,
91
+ remove,
92
+ has
101
93
  };
102
94
  };
103
95
  export default storageClient;