iota-utools 0.1.1 → 0.1.2
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/lib/cjs/index.js +10 -10
- package/lib/cjs/storage/index.d.ts +1 -32
- package/lib/cjs/storage/monitorStorage.d.ts +32 -0
- package/lib/cjs/storage/monitorStorage.js +79 -0
- package/lib/es/index.js +3 -3
- package/lib/es/storage/index.d.ts +1 -32
- package/lib/es/storage/monitorStorage.d.ts +32 -0
- package/lib/es/storage/monitorStorage.js +77 -0
- package/package.json +1 -1
package/lib/cjs/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var local = require('./storage/local.js');
|
|
4
|
+
var session = require('./storage/session.js');
|
|
5
|
+
var monitorStorage = require('./storage/monitorStorage.js');
|
|
4
6
|
var _typeof = require('./utools/typeof.js');
|
|
5
7
|
var sleep = require('./utools/sleep.js');
|
|
6
8
|
var copyText = require('./utools/copyText.js');
|
|
@@ -24,12 +26,16 @@ var flattenObject = require('./object/flattenObject.js');
|
|
|
24
26
|
var restoreObject = require('./object/restoreObject.js');
|
|
25
27
|
var awitto = require('./async/awitto.js');
|
|
26
28
|
var generateCalendar = require('./date/generateCalendar.js');
|
|
27
|
-
var local = require('./storage/local.js');
|
|
28
|
-
var session = require('./storage/session.js');
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
exports.
|
|
32
|
+
exports.getLocalStorage = local.getLocalStorage;
|
|
33
|
+
exports.removeLocalStorageKey = local.removeLocalStorageKey;
|
|
34
|
+
exports.setLocalStorage = local.setLocalStorage;
|
|
35
|
+
exports.getSessionStorage = session.getSessionStorage;
|
|
36
|
+
exports.removeSessionStorageKey = session.removeSessionStorageKey;
|
|
37
|
+
exports.setSessionStorage = session.setSessionStorage;
|
|
38
|
+
exports.monitorStorage = monitorStorage.monitorStorage;
|
|
33
39
|
Object.defineProperty(exports, 'DataType', {
|
|
34
40
|
enumerable: true,
|
|
35
41
|
get: function () { return _typeof.DataType; }
|
|
@@ -78,9 +84,3 @@ exports.restoreObject = restoreObject.restoreObject;
|
|
|
78
84
|
exports.unflattenObject = restoreObject.unflattenObject;
|
|
79
85
|
exports.awitto = awitto.awitto;
|
|
80
86
|
exports.generateCalendar = generateCalendar.generateCalendar;
|
|
81
|
-
exports.getLocalStorage = local.getLocalStorage;
|
|
82
|
-
exports.removeLocalStorageKey = local.removeLocalStorageKey;
|
|
83
|
-
exports.setLocalStorage = local.setLocalStorage;
|
|
84
|
-
exports.getSessionStorage = session.getSessionStorage;
|
|
85
|
-
exports.removeSessionStorageKey = session.removeSessionStorageKey;
|
|
86
|
-
exports.setSessionStorage = session.setSessionStorage;
|
|
@@ -1,34 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Storage 变更事件的详细信息
|
|
3
|
-
*/
|
|
4
|
-
export interface StorageChangeEvent extends Event {
|
|
5
|
-
key: string;
|
|
6
|
-
newValue: string;
|
|
7
|
-
oldValue: string | null;
|
|
8
|
-
storageArea: 'local' | 'session';
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Storage 监听器配置选项
|
|
12
|
-
*/
|
|
13
|
-
export interface StorageMonitorOptions {
|
|
14
|
-
/** 监听类型:'local' | 'session' | 'both' */
|
|
15
|
-
type?: 'local' | 'session' | 'both';
|
|
16
|
-
/** 是否在值相同时也触发事件 */
|
|
17
|
-
emitUnchanged?: boolean;
|
|
18
|
-
/** 自定义错误处理函数 */
|
|
19
|
-
onError?: (error: Error) => void;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* 监控浏览器存储变化
|
|
23
|
-
* @description 监听并增强 localStorage 和 sessionStorage 的变更事件
|
|
24
|
-
* @param options - 监听器配置选项
|
|
25
|
-
* @returns 清理函数
|
|
26
|
-
* @example
|
|
27
|
-
* const cleanup = monitorStorage({ type: 'both' });
|
|
28
|
-
* window.addEventListener('local', e => console.log(e));
|
|
29
|
-
* window.addEventListener('session', e => console.log(e));
|
|
30
|
-
* cleanup();
|
|
31
|
-
*/
|
|
32
|
-
export declare const monitorStorage: (options?: StorageMonitorOptions) => () => void;
|
|
33
1
|
export * from "./local";
|
|
34
2
|
export * from "./session";
|
|
3
|
+
export * from "./monitorStorage";
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage 变更事件的详细信息
|
|
3
|
+
*/
|
|
4
|
+
export interface StorageChangeEvent extends Event {
|
|
5
|
+
key: string;
|
|
6
|
+
newValue: string;
|
|
7
|
+
oldValue: string | null;
|
|
8
|
+
storageArea: 'local' | 'session';
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Storage 监听器配置选项
|
|
12
|
+
*/
|
|
13
|
+
export interface StorageMonitorOptions {
|
|
14
|
+
/** 监听类型:'local' | 'session' | 'both' */
|
|
15
|
+
type?: 'local' | 'session' | 'both';
|
|
16
|
+
/** 是否在值相同时也触发事件 */
|
|
17
|
+
emitUnchanged?: boolean;
|
|
18
|
+
/** 自定义错误处理函数 */
|
|
19
|
+
onError?: (error: Error) => void;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 监控浏览器存储变化
|
|
23
|
+
* @description 监听并增强 localStorage 和 sessionStorage 的变更事件
|
|
24
|
+
* @param options - 监听器配置选项
|
|
25
|
+
* @returns 清理函数
|
|
26
|
+
* @example
|
|
27
|
+
* const cleanup = monitorStorage({ type: 'both' });
|
|
28
|
+
* window.addEventListener('local', e => console.log(e));
|
|
29
|
+
* window.addEventListener('session', e => console.log(e));
|
|
30
|
+
* cleanup();
|
|
31
|
+
*/
|
|
32
|
+
export declare const monitorStorage: (options?: StorageMonitorOptions) => () => void;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 监控浏览器存储变化
|
|
5
|
+
* @description 监听并增强 localStorage 和 sessionStorage 的变更事件
|
|
6
|
+
* @param options - 监听器配置选项
|
|
7
|
+
* @returns 清理函数
|
|
8
|
+
* @example
|
|
9
|
+
* const cleanup = monitorStorage({ type: 'both' });
|
|
10
|
+
* window.addEventListener('local', e => console.log(e));
|
|
11
|
+
* window.addEventListener('session', e => console.log(e));
|
|
12
|
+
* cleanup();
|
|
13
|
+
*/
|
|
14
|
+
const monitorStorage = (options = {}) => {
|
|
15
|
+
const { type = 'both', emitUnchanged = false, onError = console.error } = options;
|
|
16
|
+
const enhanceStorage = (storage, type) => {
|
|
17
|
+
const original = {
|
|
18
|
+
setItem: storage.setItem.bind(storage),
|
|
19
|
+
removeItem: storage.removeItem.bind(storage),
|
|
20
|
+
clear: storage.clear.bind(storage)
|
|
21
|
+
};
|
|
22
|
+
const createEvent = (key, newValue, oldValue = null) => {
|
|
23
|
+
const event = new Event(type);
|
|
24
|
+
event.key = key;
|
|
25
|
+
event.newValue = newValue;
|
|
26
|
+
event.oldValue = oldValue;
|
|
27
|
+
event.storageArea = type;
|
|
28
|
+
return event;
|
|
29
|
+
};
|
|
30
|
+
const dispatchStorageEvent = (event) => {
|
|
31
|
+
try {
|
|
32
|
+
window.dispatchEvent(event);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
onError(error);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
// 增强 setItem
|
|
39
|
+
storage.setItem = (key, value) => {
|
|
40
|
+
const oldValue = storage.getItem(key);
|
|
41
|
+
if (!emitUnchanged && oldValue === value) {
|
|
42
|
+
return original.setItem(key, value);
|
|
43
|
+
}
|
|
44
|
+
original.setItem(key, value);
|
|
45
|
+
dispatchStorageEvent(createEvent(key, value, oldValue));
|
|
46
|
+
};
|
|
47
|
+
// 增强 removeItem
|
|
48
|
+
storage.removeItem = (key) => {
|
|
49
|
+
const oldValue = storage.getItem(key);
|
|
50
|
+
original.removeItem(key);
|
|
51
|
+
dispatchStorageEvent(createEvent(key, '', oldValue));
|
|
52
|
+
};
|
|
53
|
+
// 增强 clear
|
|
54
|
+
storage.clear = () => {
|
|
55
|
+
original.clear();
|
|
56
|
+
dispatchStorageEvent(createEvent('', ''));
|
|
57
|
+
};
|
|
58
|
+
return original;
|
|
59
|
+
};
|
|
60
|
+
const enhanced = {
|
|
61
|
+
local: type === 'local' || type === 'both'
|
|
62
|
+
? enhanceStorage(localStorage, 'local')
|
|
63
|
+
: null,
|
|
64
|
+
session: type === 'session' || type === 'both'
|
|
65
|
+
? enhanceStorage(sessionStorage, 'session')
|
|
66
|
+
: null
|
|
67
|
+
};
|
|
68
|
+
// 返回清理函数
|
|
69
|
+
return () => {
|
|
70
|
+
if (enhanced.local) {
|
|
71
|
+
Object.assign(localStorage, enhanced.local);
|
|
72
|
+
}
|
|
73
|
+
if (enhanced.session) {
|
|
74
|
+
Object.assign(sessionStorage, enhanced.session);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
exports.monitorStorage = monitorStorage;
|
package/lib/es/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { getLocalStorage, removeLocalStorageKey, setLocalStorage } from './storage/local.js';
|
|
2
|
+
export { getSessionStorage, removeSessionStorageKey, setSessionStorage } from './storage/session.js';
|
|
3
|
+
export { monitorStorage } from './storage/monitorStorage.js';
|
|
2
4
|
export { DataType, getTypeInfo, getTypeof, isArray, isBigInt, isBoolean, isDate, isFunction, isMap, isNull, isNumber, isObject, isPlainObject, isPrimitive, isPromise, isRegExp, isSet, isString, isSymbol, isUndefined } from './utools/typeof.js';
|
|
3
5
|
export { sleep } from './utools/sleep.js';
|
|
4
6
|
export { copyText } from './utools/copyText.js';
|
|
@@ -22,5 +24,3 @@ export { flattenObject } from './object/flattenObject.js';
|
|
|
22
24
|
export { restoreObject, unflattenObject } from './object/restoreObject.js';
|
|
23
25
|
export { awitto } from './async/awitto.js';
|
|
24
26
|
export { generateCalendar } from './date/generateCalendar.js';
|
|
25
|
-
export { getLocalStorage, removeLocalStorageKey, setLocalStorage } from './storage/local.js';
|
|
26
|
-
export { getSessionStorage, removeSessionStorageKey, setSessionStorage } from './storage/session.js';
|
|
@@ -1,34 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Storage 变更事件的详细信息
|
|
3
|
-
*/
|
|
4
|
-
export interface StorageChangeEvent extends Event {
|
|
5
|
-
key: string;
|
|
6
|
-
newValue: string;
|
|
7
|
-
oldValue: string | null;
|
|
8
|
-
storageArea: 'local' | 'session';
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Storage 监听器配置选项
|
|
12
|
-
*/
|
|
13
|
-
export interface StorageMonitorOptions {
|
|
14
|
-
/** 监听类型:'local' | 'session' | 'both' */
|
|
15
|
-
type?: 'local' | 'session' | 'both';
|
|
16
|
-
/** 是否在值相同时也触发事件 */
|
|
17
|
-
emitUnchanged?: boolean;
|
|
18
|
-
/** 自定义错误处理函数 */
|
|
19
|
-
onError?: (error: Error) => void;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* 监控浏览器存储变化
|
|
23
|
-
* @description 监听并增强 localStorage 和 sessionStorage 的变更事件
|
|
24
|
-
* @param options - 监听器配置选项
|
|
25
|
-
* @returns 清理函数
|
|
26
|
-
* @example
|
|
27
|
-
* const cleanup = monitorStorage({ type: 'both' });
|
|
28
|
-
* window.addEventListener('local', e => console.log(e));
|
|
29
|
-
* window.addEventListener('session', e => console.log(e));
|
|
30
|
-
* cleanup();
|
|
31
|
-
*/
|
|
32
|
-
export declare const monitorStorage: (options?: StorageMonitorOptions) => () => void;
|
|
33
1
|
export * from "./local";
|
|
34
2
|
export * from "./session";
|
|
3
|
+
export * from "./monitorStorage";
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage 变更事件的详细信息
|
|
3
|
+
*/
|
|
4
|
+
export interface StorageChangeEvent extends Event {
|
|
5
|
+
key: string;
|
|
6
|
+
newValue: string;
|
|
7
|
+
oldValue: string | null;
|
|
8
|
+
storageArea: 'local' | 'session';
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Storage 监听器配置选项
|
|
12
|
+
*/
|
|
13
|
+
export interface StorageMonitorOptions {
|
|
14
|
+
/** 监听类型:'local' | 'session' | 'both' */
|
|
15
|
+
type?: 'local' | 'session' | 'both';
|
|
16
|
+
/** 是否在值相同时也触发事件 */
|
|
17
|
+
emitUnchanged?: boolean;
|
|
18
|
+
/** 自定义错误处理函数 */
|
|
19
|
+
onError?: (error: Error) => void;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 监控浏览器存储变化
|
|
23
|
+
* @description 监听并增强 localStorage 和 sessionStorage 的变更事件
|
|
24
|
+
* @param options - 监听器配置选项
|
|
25
|
+
* @returns 清理函数
|
|
26
|
+
* @example
|
|
27
|
+
* const cleanup = monitorStorage({ type: 'both' });
|
|
28
|
+
* window.addEventListener('local', e => console.log(e));
|
|
29
|
+
* window.addEventListener('session', e => console.log(e));
|
|
30
|
+
* cleanup();
|
|
31
|
+
*/
|
|
32
|
+
export declare const monitorStorage: (options?: StorageMonitorOptions) => () => void;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 监控浏览器存储变化
|
|
3
|
+
* @description 监听并增强 localStorage 和 sessionStorage 的变更事件
|
|
4
|
+
* @param options - 监听器配置选项
|
|
5
|
+
* @returns 清理函数
|
|
6
|
+
* @example
|
|
7
|
+
* const cleanup = monitorStorage({ type: 'both' });
|
|
8
|
+
* window.addEventListener('local', e => console.log(e));
|
|
9
|
+
* window.addEventListener('session', e => console.log(e));
|
|
10
|
+
* cleanup();
|
|
11
|
+
*/
|
|
12
|
+
const monitorStorage = (options = {}) => {
|
|
13
|
+
const { type = 'both', emitUnchanged = false, onError = console.error } = options;
|
|
14
|
+
const enhanceStorage = (storage, type) => {
|
|
15
|
+
const original = {
|
|
16
|
+
setItem: storage.setItem.bind(storage),
|
|
17
|
+
removeItem: storage.removeItem.bind(storage),
|
|
18
|
+
clear: storage.clear.bind(storage)
|
|
19
|
+
};
|
|
20
|
+
const createEvent = (key, newValue, oldValue = null) => {
|
|
21
|
+
const event = new Event(type);
|
|
22
|
+
event.key = key;
|
|
23
|
+
event.newValue = newValue;
|
|
24
|
+
event.oldValue = oldValue;
|
|
25
|
+
event.storageArea = type;
|
|
26
|
+
return event;
|
|
27
|
+
};
|
|
28
|
+
const dispatchStorageEvent = (event) => {
|
|
29
|
+
try {
|
|
30
|
+
window.dispatchEvent(event);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
onError(error);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
// 增强 setItem
|
|
37
|
+
storage.setItem = (key, value) => {
|
|
38
|
+
const oldValue = storage.getItem(key);
|
|
39
|
+
if (!emitUnchanged && oldValue === value) {
|
|
40
|
+
return original.setItem(key, value);
|
|
41
|
+
}
|
|
42
|
+
original.setItem(key, value);
|
|
43
|
+
dispatchStorageEvent(createEvent(key, value, oldValue));
|
|
44
|
+
};
|
|
45
|
+
// 增强 removeItem
|
|
46
|
+
storage.removeItem = (key) => {
|
|
47
|
+
const oldValue = storage.getItem(key);
|
|
48
|
+
original.removeItem(key);
|
|
49
|
+
dispatchStorageEvent(createEvent(key, '', oldValue));
|
|
50
|
+
};
|
|
51
|
+
// 增强 clear
|
|
52
|
+
storage.clear = () => {
|
|
53
|
+
original.clear();
|
|
54
|
+
dispatchStorageEvent(createEvent('', ''));
|
|
55
|
+
};
|
|
56
|
+
return original;
|
|
57
|
+
};
|
|
58
|
+
const enhanced = {
|
|
59
|
+
local: type === 'local' || type === 'both'
|
|
60
|
+
? enhanceStorage(localStorage, 'local')
|
|
61
|
+
: null,
|
|
62
|
+
session: type === 'session' || type === 'both'
|
|
63
|
+
? enhanceStorage(sessionStorage, 'session')
|
|
64
|
+
: null
|
|
65
|
+
};
|
|
66
|
+
// 返回清理函数
|
|
67
|
+
return () => {
|
|
68
|
+
if (enhanced.local) {
|
|
69
|
+
Object.assign(localStorage, enhanced.local);
|
|
70
|
+
}
|
|
71
|
+
if (enhanced.session) {
|
|
72
|
+
Object.assign(sessionStorage, enhanced.session);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
export { monitorStorage };
|