@sima-land/isomorph 11.0.0-alpha.41 → 11.0.0-alpha.43
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/dist/cjs/package.json +1 -1
- package/dist/cjs/utils/web/storage/index.js +17 -18
- package/dist/cjs/utils/web/storage/index.js.map +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/esm/utils/web/storage/index.js +16 -17
- package/dist/esm/utils/web/storage/index.js.map +1 -1
- package/dist/types/utils/web/storage/index.d.ts +2 -3
- package/dist/types/utils/web/storage/index.d.ts.map +1 -1
- package/package.json +35 -26
- package/src/utils/web/storage/index.ts +18 -19
package/dist/cjs/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.createSafeStorage = createSafeStorage;
|
|
7
7
|
/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -14,10 +14,9 @@ exports.createStorageUtils = createStorageUtils;
|
|
|
14
14
|
* Возвращает объект для безопасной работы с браузерным хранилищем (LocalStorage, SessionStorage).
|
|
15
15
|
* @param getStorage Функция, которая должна вернуть целевое хранилище.
|
|
16
16
|
* @return Объект-обертка для безопасной работы с браузерным хранилищем.
|
|
17
|
-
* @todo Пересмотреть и перенести из browser?
|
|
18
17
|
*/
|
|
19
|
-
function
|
|
20
|
-
|
|
18
|
+
function createSafeStorage(getStorage) {
|
|
19
|
+
const isAvailable = () => {
|
|
21
20
|
try {
|
|
22
21
|
const testKey = `storage_test_key::${Date.now()}`;
|
|
23
22
|
getStorage().setItem(testKey, testKey);
|
|
@@ -26,40 +25,40 @@ function createStorageUtils(getStorage) {
|
|
|
26
25
|
} catch {
|
|
27
26
|
return false;
|
|
28
27
|
}
|
|
29
|
-
}
|
|
30
|
-
|
|
28
|
+
};
|
|
29
|
+
const clear = () => {
|
|
31
30
|
if (isAvailable()) {
|
|
32
31
|
getStorage().clear();
|
|
33
32
|
}
|
|
34
|
-
}
|
|
35
|
-
|
|
33
|
+
};
|
|
34
|
+
const getItem = name => {
|
|
36
35
|
if (isAvailable()) {
|
|
37
36
|
return getStorage().getItem(name);
|
|
38
37
|
}
|
|
39
38
|
return null;
|
|
40
|
-
}
|
|
41
|
-
|
|
39
|
+
};
|
|
40
|
+
const key = index => {
|
|
42
41
|
if (isAvailable()) {
|
|
43
42
|
return getStorage().key(index);
|
|
44
43
|
}
|
|
45
44
|
return null;
|
|
46
|
-
}
|
|
47
|
-
|
|
45
|
+
};
|
|
46
|
+
const removeItem = name => {
|
|
48
47
|
if (isAvailable()) {
|
|
49
48
|
getStorage().removeItem(name);
|
|
50
49
|
}
|
|
51
|
-
}
|
|
52
|
-
|
|
50
|
+
};
|
|
51
|
+
const setItem = (name, value) => {
|
|
53
52
|
if (isAvailable()) {
|
|
54
53
|
getStorage().setItem(name, value);
|
|
55
54
|
}
|
|
56
|
-
}
|
|
57
|
-
|
|
55
|
+
};
|
|
56
|
+
const getLength = () => {
|
|
58
57
|
if (isAvailable()) {
|
|
59
58
|
return getStorage().length;
|
|
60
59
|
}
|
|
61
60
|
return 0;
|
|
62
|
-
}
|
|
61
|
+
};
|
|
63
62
|
return {
|
|
64
63
|
isAvailable,
|
|
65
64
|
clear,
|
|
@@ -68,7 +67,7 @@ function createStorageUtils(getStorage) {
|
|
|
68
67
|
removeItem,
|
|
69
68
|
setItem,
|
|
70
69
|
get length() {
|
|
71
|
-
return
|
|
70
|
+
return getLength();
|
|
72
71
|
}
|
|
73
72
|
};
|
|
74
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["
|
|
1
|
+
{"version":3,"file":"index.js","names":["createSafeStorage","getStorage","isAvailable","testKey","Date","now","setItem","removeItem","clear","getItem","name","key","index","value","getLength","length"],"sources":["../../../../../src/utils/web/storage/index.ts"],"sourcesContent":["/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */\n\n/**\n * Интерфейс объекта-обертки для безопасной работы с WebStorage.\n */\nexport interface SafeStorage extends Storage {\n isAvailable: () => boolean;\n}\n\n/**\n * Возвращает объект для безопасной работы с браузерным хранилищем (LocalStorage, SessionStorage).\n * @param getStorage Функция, которая должна вернуть целевое хранилище.\n * @return Объект-обертка для безопасной работы с браузерным хранилищем.\n */\nexport function createSafeStorage(getStorage: () => Storage): SafeStorage {\n const isAvailable = (): boolean => {\n try {\n const testKey = `storage_test_key::${Date.now()}`;\n\n getStorage().setItem(testKey, testKey);\n getStorage().removeItem(testKey);\n\n return true;\n } catch {\n return false;\n }\n };\n\n const clear = (): void => {\n if (isAvailable()) {\n getStorage().clear();\n }\n };\n\n const getItem = (name: string): string | null => {\n if (isAvailable()) {\n return getStorage().getItem(name);\n }\n\n return null;\n };\n\n const key = (index: number): string | null => {\n if (isAvailable()) {\n return getStorage().key(index);\n }\n\n return null;\n };\n\n const removeItem = (name: string): void => {\n if (isAvailable()) {\n getStorage().removeItem(name);\n }\n };\n\n const setItem = (name: string, value: string): void => {\n if (isAvailable()) {\n getStorage().setItem(name, value);\n }\n };\n\n const getLength = (): number => {\n if (isAvailable()) {\n return getStorage().length;\n }\n\n return 0;\n };\n\n return {\n isAvailable,\n\n clear,\n getItem,\n key,\n removeItem,\n setItem,\n get length() {\n return getLength();\n },\n };\n}\n"],"mappings":";;;;;;AAAA;;AAEA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACO,SAASA,iBAAiBA,CAACC,UAAyB,EAAe;EACxE,MAAMC,WAAW,GAAGA,CAAA,KAAe;IACjC,IAAI;MACF,MAAMC,OAAO,GAAI,qBAAoBC,IAAI,CAACC,GAAG,CAAC,CAAE,EAAC;MAEjDJ,UAAU,CAAC,CAAC,CAACK,OAAO,CAACH,OAAO,EAAEA,OAAO,CAAC;MACtCF,UAAU,CAAC,CAAC,CAACM,UAAU,CAACJ,OAAO,CAAC;MAEhC,OAAO,IAAI;IACb,CAAC,CAAC,MAAM;MACN,OAAO,KAAK;IACd;EACF,CAAC;EAED,MAAMK,KAAK,GAAGA,CAAA,KAAY;IACxB,IAAIN,WAAW,CAAC,CAAC,EAAE;MACjBD,UAAU,CAAC,CAAC,CAACO,KAAK,CAAC,CAAC;IACtB;EACF,CAAC;EAED,MAAMC,OAAO,GAAIC,IAAY,IAAoB;IAC/C,IAAIR,WAAW,CAAC,CAAC,EAAE;MACjB,OAAOD,UAAU,CAAC,CAAC,CAACQ,OAAO,CAACC,IAAI,CAAC;IACnC;IAEA,OAAO,IAAI;EACb,CAAC;EAED,MAAMC,GAAG,GAAIC,KAAa,IAAoB;IAC5C,IAAIV,WAAW,CAAC,CAAC,EAAE;MACjB,OAAOD,UAAU,CAAC,CAAC,CAACU,GAAG,CAACC,KAAK,CAAC;IAChC;IAEA,OAAO,IAAI;EACb,CAAC;EAED,MAAML,UAAU,GAAIG,IAAY,IAAW;IACzC,IAAIR,WAAW,CAAC,CAAC,EAAE;MACjBD,UAAU,CAAC,CAAC,CAACM,UAAU,CAACG,IAAI,CAAC;IAC/B;EACF,CAAC;EAED,MAAMJ,OAAO,GAAGA,CAACI,IAAY,EAAEG,KAAa,KAAW;IACrD,IAAIX,WAAW,CAAC,CAAC,EAAE;MACjBD,UAAU,CAAC,CAAC,CAACK,OAAO,CAACI,IAAI,EAAEG,KAAK,CAAC;IACnC;EACF,CAAC;EAED,MAAMC,SAAS,GAAGA,CAAA,KAAc;IAC9B,IAAIZ,WAAW,CAAC,CAAC,EAAE;MACjB,OAAOD,UAAU,CAAC,CAAC,CAACc,MAAM;IAC5B;IAEA,OAAO,CAAC;EACV,CAAC;EAED,OAAO;IACLb,WAAW;IAEXM,KAAK;IACLC,OAAO;IACPE,GAAG;IACHJ,UAAU;IACVD,OAAO;IACP,IAAIS,MAAMA,CAAA,EAAG;MACX,OAAOD,SAAS,CAAC,CAAC;IACpB;EACF,CAAC;AACH"}
|
package/dist/esm/package.json
CHANGED
|
@@ -8,10 +8,9 @@
|
|
|
8
8
|
* Возвращает объект для безопасной работы с браузерным хранилищем (LocalStorage, SessionStorage).
|
|
9
9
|
* @param getStorage Функция, которая должна вернуть целевое хранилище.
|
|
10
10
|
* @return Объект-обертка для безопасной работы с браузерным хранилищем.
|
|
11
|
-
* @todo Пересмотреть и перенести из browser?
|
|
12
11
|
*/
|
|
13
|
-
export function
|
|
14
|
-
|
|
12
|
+
export function createSafeStorage(getStorage) {
|
|
13
|
+
const isAvailable = () => {
|
|
15
14
|
try {
|
|
16
15
|
const testKey = `storage_test_key::${Date.now()}`;
|
|
17
16
|
getStorage().setItem(testKey, testKey);
|
|
@@ -20,40 +19,40 @@ export function createStorageUtils(getStorage) {
|
|
|
20
19
|
} catch {
|
|
21
20
|
return false;
|
|
22
21
|
}
|
|
23
|
-
}
|
|
24
|
-
|
|
22
|
+
};
|
|
23
|
+
const clear = () => {
|
|
25
24
|
if (isAvailable()) {
|
|
26
25
|
getStorage().clear();
|
|
27
26
|
}
|
|
28
|
-
}
|
|
29
|
-
|
|
27
|
+
};
|
|
28
|
+
const getItem = name => {
|
|
30
29
|
if (isAvailable()) {
|
|
31
30
|
return getStorage().getItem(name);
|
|
32
31
|
}
|
|
33
32
|
return null;
|
|
34
|
-
}
|
|
35
|
-
|
|
33
|
+
};
|
|
34
|
+
const key = index => {
|
|
36
35
|
if (isAvailable()) {
|
|
37
36
|
return getStorage().key(index);
|
|
38
37
|
}
|
|
39
38
|
return null;
|
|
40
|
-
}
|
|
41
|
-
|
|
39
|
+
};
|
|
40
|
+
const removeItem = name => {
|
|
42
41
|
if (isAvailable()) {
|
|
43
42
|
getStorage().removeItem(name);
|
|
44
43
|
}
|
|
45
|
-
}
|
|
46
|
-
|
|
44
|
+
};
|
|
45
|
+
const setItem = (name, value) => {
|
|
47
46
|
if (isAvailable()) {
|
|
48
47
|
getStorage().setItem(name, value);
|
|
49
48
|
}
|
|
50
|
-
}
|
|
51
|
-
|
|
49
|
+
};
|
|
50
|
+
const getLength = () => {
|
|
52
51
|
if (isAvailable()) {
|
|
53
52
|
return getStorage().length;
|
|
54
53
|
}
|
|
55
54
|
return 0;
|
|
56
|
-
}
|
|
55
|
+
};
|
|
57
56
|
return {
|
|
58
57
|
isAvailable,
|
|
59
58
|
clear,
|
|
@@ -62,7 +61,7 @@ export function createStorageUtils(getStorage) {
|
|
|
62
61
|
removeItem,
|
|
63
62
|
setItem,
|
|
64
63
|
get length() {
|
|
65
|
-
return
|
|
64
|
+
return getLength();
|
|
66
65
|
}
|
|
67
66
|
};
|
|
68
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["
|
|
1
|
+
{"version":3,"file":"index.js","names":["createSafeStorage","getStorage","isAvailable","testKey","Date","now","setItem","removeItem","clear","getItem","name","key","index","value","getLength","length"],"sources":["../../../../../src/utils/web/storage/index.ts"],"sourcesContent":["/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */\n\n/**\n * Интерфейс объекта-обертки для безопасной работы с WebStorage.\n */\nexport interface SafeStorage extends Storage {\n isAvailable: () => boolean;\n}\n\n/**\n * Возвращает объект для безопасной работы с браузерным хранилищем (LocalStorage, SessionStorage).\n * @param getStorage Функция, которая должна вернуть целевое хранилище.\n * @return Объект-обертка для безопасной работы с браузерным хранилищем.\n */\nexport function createSafeStorage(getStorage: () => Storage): SafeStorage {\n const isAvailable = (): boolean => {\n try {\n const testKey = `storage_test_key::${Date.now()}`;\n\n getStorage().setItem(testKey, testKey);\n getStorage().removeItem(testKey);\n\n return true;\n } catch {\n return false;\n }\n };\n\n const clear = (): void => {\n if (isAvailable()) {\n getStorage().clear();\n }\n };\n\n const getItem = (name: string): string | null => {\n if (isAvailable()) {\n return getStorage().getItem(name);\n }\n\n return null;\n };\n\n const key = (index: number): string | null => {\n if (isAvailable()) {\n return getStorage().key(index);\n }\n\n return null;\n };\n\n const removeItem = (name: string): void => {\n if (isAvailable()) {\n getStorage().removeItem(name);\n }\n };\n\n const setItem = (name: string, value: string): void => {\n if (isAvailable()) {\n getStorage().setItem(name, value);\n }\n };\n\n const getLength = (): number => {\n if (isAvailable()) {\n return getStorage().length;\n }\n\n return 0;\n };\n\n return {\n isAvailable,\n\n clear,\n getItem,\n key,\n removeItem,\n setItem,\n get length() {\n return getLength();\n },\n };\n}\n"],"mappings":"AAAA;;AAEA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,iBAAiBA,CAACC,UAAyB,EAAe;EACxE,MAAMC,WAAW,GAAGA,CAAA,KAAe;IACjC,IAAI;MACF,MAAMC,OAAO,GAAI,qBAAoBC,IAAI,CAACC,GAAG,CAAC,CAAE,EAAC;MAEjDJ,UAAU,CAAC,CAAC,CAACK,OAAO,CAACH,OAAO,EAAEA,OAAO,CAAC;MACtCF,UAAU,CAAC,CAAC,CAACM,UAAU,CAACJ,OAAO,CAAC;MAEhC,OAAO,IAAI;IACb,CAAC,CAAC,MAAM;MACN,OAAO,KAAK;IACd;EACF,CAAC;EAED,MAAMK,KAAK,GAAGA,CAAA,KAAY;IACxB,IAAIN,WAAW,CAAC,CAAC,EAAE;MACjBD,UAAU,CAAC,CAAC,CAACO,KAAK,CAAC,CAAC;IACtB;EACF,CAAC;EAED,MAAMC,OAAO,GAAIC,IAAY,IAAoB;IAC/C,IAAIR,WAAW,CAAC,CAAC,EAAE;MACjB,OAAOD,UAAU,CAAC,CAAC,CAACQ,OAAO,CAACC,IAAI,CAAC;IACnC;IAEA,OAAO,IAAI;EACb,CAAC;EAED,MAAMC,GAAG,GAAIC,KAAa,IAAoB;IAC5C,IAAIV,WAAW,CAAC,CAAC,EAAE;MACjB,OAAOD,UAAU,CAAC,CAAC,CAACU,GAAG,CAACC,KAAK,CAAC;IAChC;IAEA,OAAO,IAAI;EACb,CAAC;EAED,MAAML,UAAU,GAAIG,IAAY,IAAW;IACzC,IAAIR,WAAW,CAAC,CAAC,EAAE;MACjBD,UAAU,CAAC,CAAC,CAACM,UAAU,CAACG,IAAI,CAAC;IAC/B;EACF,CAAC;EAED,MAAMJ,OAAO,GAAGA,CAACI,IAAY,EAAEG,KAAa,KAAW;IACrD,IAAIX,WAAW,CAAC,CAAC,EAAE;MACjBD,UAAU,CAAC,CAAC,CAACK,OAAO,CAACI,IAAI,EAAEG,KAAK,CAAC;IACnC;EACF,CAAC;EAED,MAAMC,SAAS,GAAGA,CAAA,KAAc;IAC9B,IAAIZ,WAAW,CAAC,CAAC,EAAE;MACjB,OAAOD,UAAU,CAAC,CAAC,CAACc,MAAM;IAC5B;IAEA,OAAO,CAAC;EACV,CAAC;EAED,OAAO;IACLb,WAAW;IAEXM,KAAK;IACLC,OAAO;IACPE,GAAG;IACHJ,UAAU;IACVD,OAAO;IACP,IAAIS,MAAMA,CAAA,EAAG;MACX,OAAOD,SAAS,CAAC,CAAC;IACpB;EACF,CAAC;AACH"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Интерфейс объекта-обертки для безопасной работы с WebStorage.
|
|
3
3
|
*/
|
|
4
|
-
export interface
|
|
4
|
+
export interface SafeStorage extends Storage {
|
|
5
5
|
isAvailable: () => boolean;
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
8
|
* Возвращает объект для безопасной работы с браузерным хранилищем (LocalStorage, SessionStorage).
|
|
9
9
|
* @param getStorage Функция, которая должна вернуть целевое хранилище.
|
|
10
10
|
* @return Объект-обертка для безопасной работы с браузерным хранилищем.
|
|
11
|
-
* @todo Пересмотреть и перенести из browser?
|
|
12
11
|
*/
|
|
13
|
-
export declare function
|
|
12
|
+
export declare function createSafeStorage(getStorage: () => Storage): SafeStorage;
|
|
14
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/utils/web/storage/index.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/utils/web/storage/index.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,OAAO;IAC1C,WAAW,EAAE,MAAM,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,OAAO,GAAG,WAAW,CAoExE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sima-land/isomorph",
|
|
3
|
-
"version": "11.0.0-alpha.
|
|
3
|
+
"version": "11.0.0-alpha.43",
|
|
4
4
|
"description": "Tiny framework for fast start frontend microservices",
|
|
5
5
|
"author": "www.sima-land.ru team",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -157,6 +157,12 @@
|
|
|
157
157
|
"import": "./dist/esm/utils/web/analytics/index.js",
|
|
158
158
|
"default": "./dist/esm/utils/web/analytics/index.js"
|
|
159
159
|
},
|
|
160
|
+
"./utils/web/storage": {
|
|
161
|
+
"types": "./dist/types/utils/web/storage/index.d.ts",
|
|
162
|
+
"require": "./dist/cjs/utils/web/storage/index.js",
|
|
163
|
+
"import": "./dist/esm/utils/web/storage/index.js",
|
|
164
|
+
"default": "./dist/esm/utils/web/storage/index.js"
|
|
165
|
+
},
|
|
160
166
|
"./utils/webpack": {
|
|
161
167
|
"types": "./dist/types/utils/webpack/index.d.ts",
|
|
162
168
|
"require": "./dist/cjs/utils/webpack/index.js",
|
|
@@ -166,79 +172,82 @@
|
|
|
166
172
|
},
|
|
167
173
|
"typesVersions": {
|
|
168
174
|
">=4.2": {
|
|
169
|
-
"
|
|
175
|
+
"cache": [
|
|
170
176
|
"./dist/types/cache/index.d.ts"
|
|
171
177
|
],
|
|
172
|
-
"
|
|
178
|
+
"config": [
|
|
173
179
|
"./dist/types/config/index.d.ts"
|
|
174
180
|
],
|
|
175
|
-
"
|
|
181
|
+
"di": [
|
|
176
182
|
"./dist/types/di/index.d.ts"
|
|
177
183
|
],
|
|
178
|
-
"
|
|
184
|
+
"http": [
|
|
179
185
|
"./dist/types/http/index.d.ts"
|
|
180
186
|
],
|
|
181
|
-
"
|
|
187
|
+
"log": [
|
|
182
188
|
"./dist/types/log/index.d.ts"
|
|
183
189
|
],
|
|
184
|
-
"
|
|
190
|
+
"tokens": [
|
|
185
191
|
"./dist/types/tokens.d.ts"
|
|
186
192
|
],
|
|
187
|
-
"
|
|
193
|
+
"preset/isomorphic": [
|
|
188
194
|
"./dist/types/preset/isomorphic/index.d.ts"
|
|
189
195
|
],
|
|
190
|
-
"
|
|
196
|
+
"preset/isomorphic/providers": [
|
|
191
197
|
"./dist/types/preset/isomorphic/providers/index.d.ts"
|
|
192
198
|
],
|
|
193
|
-
"
|
|
199
|
+
"preset/isomorphic/utils": [
|
|
194
200
|
"./dist/types/preset/isomorphic/utils/index.d.ts"
|
|
195
201
|
],
|
|
196
|
-
"
|
|
202
|
+
"preset/web": [
|
|
197
203
|
"./dist/types/preset/web/index.d.ts"
|
|
198
204
|
],
|
|
199
|
-
"
|
|
205
|
+
"preset/web/providers": [
|
|
200
206
|
"./dist/types/preset/web/providers/index.d.ts"
|
|
201
207
|
],
|
|
202
|
-
"
|
|
208
|
+
"preset/node": [
|
|
203
209
|
"./dist/types/preset/node/index.d.ts"
|
|
204
210
|
],
|
|
205
|
-
"
|
|
211
|
+
"preset/node/node/providers": [
|
|
206
212
|
"./dist/types/preset/node/node/providers/index.d.ts"
|
|
207
213
|
],
|
|
208
|
-
"
|
|
214
|
+
"preset/node/node/utils": [
|
|
209
215
|
"./dist/types/preset/node/node/utils/index.d.ts"
|
|
210
216
|
],
|
|
211
|
-
"
|
|
217
|
+
"preset/node/handler/providers": [
|
|
212
218
|
"./dist/types/preset/node/handler/providers/index.d.ts"
|
|
213
219
|
],
|
|
214
|
-
"
|
|
220
|
+
"preset/node/handler/utils": [
|
|
215
221
|
"./dist/types/preset/node/handler/utils/index.d.ts"
|
|
216
222
|
],
|
|
217
|
-
"
|
|
223
|
+
"utils": [
|
|
218
224
|
"./dist/types/utils/index.d.ts"
|
|
219
225
|
],
|
|
220
|
-
"
|
|
226
|
+
"utils/axios": [
|
|
221
227
|
"./dist/types/utils/axios/index.d.ts"
|
|
222
228
|
],
|
|
223
|
-
"
|
|
229
|
+
"utils/express": [
|
|
224
230
|
"./dist/types/utils/express/index.d.ts"
|
|
225
231
|
],
|
|
226
|
-
"
|
|
232
|
+
"utils/react": [
|
|
227
233
|
"./dist/types/utils/react/index.d.ts"
|
|
228
234
|
],
|
|
229
|
-
"
|
|
235
|
+
"utils/redux": [
|
|
230
236
|
"./dist/types/utils/redux/index.d.ts"
|
|
231
237
|
],
|
|
232
|
-
"
|
|
238
|
+
"utils/redux-saga": [
|
|
233
239
|
"./dist/types/utils/redux-saga/index.d.ts"
|
|
234
240
|
],
|
|
235
|
-
"
|
|
241
|
+
"utils/ssr": [
|
|
236
242
|
"./dist/types/utils/ssr/index.d.ts"
|
|
237
243
|
],
|
|
238
|
-
"
|
|
244
|
+
"utils/web/analytics": [
|
|
239
245
|
"./dist/types/utils/web/analytics/index.d.ts"
|
|
240
246
|
],
|
|
241
|
-
"
|
|
247
|
+
"utils/web/storage": [
|
|
248
|
+
"./dist/types/utils/web/storage/index.d.ts"
|
|
249
|
+
],
|
|
250
|
+
"utils/webpack": [
|
|
242
251
|
"./dist/types/utils/webpack/index.d.ts"
|
|
243
252
|
]
|
|
244
253
|
}
|
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* Интерфейс объекта-обертки для безопасной работы с WebStorage.
|
|
5
5
|
*/
|
|
6
|
-
export interface
|
|
7
|
-
extends Pick<Storage, 'clear' | 'getItem' | 'key' | 'removeItem' | 'setItem' | 'length'> {
|
|
6
|
+
export interface SafeStorage extends Storage {
|
|
8
7
|
isAvailable: () => boolean;
|
|
9
8
|
}
|
|
10
9
|
|
|
@@ -12,10 +11,9 @@ export interface StorageUtils
|
|
|
12
11
|
* Возвращает объект для безопасной работы с браузерным хранилищем (LocalStorage, SessionStorage).
|
|
13
12
|
* @param getStorage Функция, которая должна вернуть целевое хранилище.
|
|
14
13
|
* @return Объект-обертка для безопасной работы с браузерным хранилищем.
|
|
15
|
-
* @todo Пересмотреть и перенести из browser?
|
|
16
14
|
*/
|
|
17
|
-
export function
|
|
18
|
-
|
|
15
|
+
export function createSafeStorage(getStorage: () => Storage): SafeStorage {
|
|
16
|
+
const isAvailable = (): boolean => {
|
|
19
17
|
try {
|
|
20
18
|
const testKey = `storage_test_key::${Date.now()}`;
|
|
21
19
|
|
|
@@ -26,48 +24,49 @@ export function createStorageUtils(getStorage: () => Storage): StorageUtils {
|
|
|
26
24
|
} catch {
|
|
27
25
|
return false;
|
|
28
26
|
}
|
|
29
|
-
}
|
|
27
|
+
};
|
|
30
28
|
|
|
31
|
-
|
|
29
|
+
const clear = (): void => {
|
|
32
30
|
if (isAvailable()) {
|
|
33
31
|
getStorage().clear();
|
|
34
32
|
}
|
|
35
|
-
}
|
|
33
|
+
};
|
|
36
34
|
|
|
37
|
-
|
|
35
|
+
const getItem = (name: string): string | null => {
|
|
38
36
|
if (isAvailable()) {
|
|
39
37
|
return getStorage().getItem(name);
|
|
40
38
|
}
|
|
41
39
|
|
|
42
40
|
return null;
|
|
43
|
-
}
|
|
41
|
+
};
|
|
44
42
|
|
|
45
|
-
|
|
43
|
+
const key = (index: number): string | null => {
|
|
46
44
|
if (isAvailable()) {
|
|
47
45
|
return getStorage().key(index);
|
|
48
46
|
}
|
|
47
|
+
|
|
49
48
|
return null;
|
|
50
|
-
}
|
|
49
|
+
};
|
|
51
50
|
|
|
52
|
-
|
|
51
|
+
const removeItem = (name: string): void => {
|
|
53
52
|
if (isAvailable()) {
|
|
54
53
|
getStorage().removeItem(name);
|
|
55
54
|
}
|
|
56
|
-
}
|
|
55
|
+
};
|
|
57
56
|
|
|
58
|
-
|
|
57
|
+
const setItem = (name: string, value: string): void => {
|
|
59
58
|
if (isAvailable()) {
|
|
60
59
|
getStorage().setItem(name, value);
|
|
61
60
|
}
|
|
62
|
-
}
|
|
61
|
+
};
|
|
63
62
|
|
|
64
|
-
|
|
63
|
+
const getLength = (): number => {
|
|
65
64
|
if (isAvailable()) {
|
|
66
65
|
return getStorage().length;
|
|
67
66
|
}
|
|
68
67
|
|
|
69
68
|
return 0;
|
|
70
|
-
}
|
|
69
|
+
};
|
|
71
70
|
|
|
72
71
|
return {
|
|
73
72
|
isAvailable,
|
|
@@ -78,7 +77,7 @@ export function createStorageUtils(getStorage: () => Storage): StorageUtils {
|
|
|
78
77
|
removeItem,
|
|
79
78
|
setItem,
|
|
80
79
|
get length() {
|
|
81
|
-
return
|
|
80
|
+
return getLength();
|
|
82
81
|
},
|
|
83
82
|
};
|
|
84
83
|
}
|