@whitesev/utils 2.8.2 → 2.9.1
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/README.md +176 -176
- package/dist/index.amd.js +283 -776
- package/dist/index.amd.js.map +1 -1
- package/dist/index.amd.min.js +2 -0
- package/dist/index.amd.min.js.map +1 -0
- package/dist/index.cjs.js +283 -776
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.cjs.min.js +2 -0
- package/dist/index.cjs.min.js.map +1 -0
- package/dist/index.esm.js +283 -776
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +2 -0
- package/dist/index.esm.min.js.map +1 -0
- package/dist/index.iife.js +283 -776
- package/dist/index.iife.js.map +1 -1
- package/dist/index.iife.min.js +2 -0
- package/dist/index.iife.min.js.map +1 -0
- package/dist/index.system.js +283 -776
- package/dist/index.system.js.map +1 -1
- package/dist/index.system.min.js +2 -0
- package/dist/index.system.min.js.map +1 -0
- package/dist/index.umd.js +283 -776
- package/dist/index.umd.js.map +1 -1
- package/dist/index.umd.min.js +2 -0
- package/dist/index.umd.min.js.map +1 -0
- package/dist/types/src/Utils.d.ts +132 -448
- package/dist/types/src/UtilsGMCookie.d.ts +4 -0
- package/dist/types/src/UtilsGMMenu.d.ts +3 -6
- package/dist/types/src/types/Httpx.d.ts +1344 -1344
- package/dist/types/src/types/Log.d.ts +19 -19
- package/dist/types/src/types/Progress.d.ts +20 -20
- package/dist/types/src/types/React.d.ts +119 -119
- package/dist/types/src/types/TryCatch.d.ts +9 -9
- package/dist/types/src/types/UtilsGMCookie.d.ts +93 -93
- package/dist/types/src/types/UtilsGMMenu.d.ts +77 -77
- package/dist/types/src/types/Vue2.d.ts +166 -166
- package/dist/types/src/types/WindowApi.d.ts +14 -14
- package/dist/types/src/types/ajaxHooker.d.ts +153 -151
- package/dist/types/src/types/env.d.ts +7 -7
- package/dist/types/src/types/global.d.ts +31 -31
- package/package.json +11 -10
- package/src/ColorConversion.ts +105 -105
- package/src/CommonUtil.ts +280 -280
- package/src/DOMUtils.ts +251 -251
- package/src/Dictionary.ts +153 -153
- package/src/GBKEncoder.ts +108 -108
- package/src/Hooks.ts +73 -73
- package/src/Httpx.ts +1457 -1457
- package/src/LockFunction.ts +62 -62
- package/src/Log.ts +258 -258
- package/src/Progress.ts +108 -108
- package/src/TryCatch.ts +86 -86
- package/src/Utils.ts +3827 -4773
- package/src/UtilsCommon.ts +14 -14
- package/src/UtilsGMCookie.ts +272 -254
- package/src/UtilsGMMenu.ts +441 -445
- package/src/Vue.ts +233 -233
- package/src/WindowApi.ts +59 -59
- package/src/indexedDB.ts +497 -497
- package/src/types/Httpx.d.ts +1344 -1344
- package/src/types/Log.d.ts +19 -19
- package/src/types/Progress.d.ts +20 -20
- package/src/types/React.d.ts +119 -119
- package/src/types/TryCatch.d.ts +9 -9
- package/src/types/UtilsGMCookie.d.ts +93 -93
- package/src/types/UtilsGMMenu.d.ts +77 -77
- package/src/types/Vue2.d.ts +166 -166
- package/src/types/WindowApi.d.ts +14 -14
- package/src/types/ajaxHooker.d.ts +153 -151
- package/src/types/env.d.ts +7 -7
- package/src/types/global.d.ts +31 -31
- package/dist/types/src/types/Event.d.ts +0 -188
- package/src/types/Event.d.ts +0 -188
package/src/indexedDB.ts
CHANGED
|
@@ -1,497 +1,497 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* indexedDB 错误结果
|
|
3
|
-
*/
|
|
4
|
-
declare interface UtilsIDBOpenErrorResult {
|
|
5
|
-
code: number;
|
|
6
|
-
msg: string;
|
|
7
|
-
event: {
|
|
8
|
-
srcElement: IDBRequest;
|
|
9
|
-
target: IDBRequest;
|
|
10
|
-
} & Event;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export class indexedDB {
|
|
14
|
-
#dbName: string;
|
|
15
|
-
#storeName: string;
|
|
16
|
-
#dbVersion: number;
|
|
17
|
-
/* websql的版本号,由于ios的问题,版本号的写法不一样 */
|
|
18
|
-
// #slqVersion = "1";
|
|
19
|
-
/* 监听IndexDB */
|
|
20
|
-
#indexedDB = globalThis.indexedDB || globalThis.mozIndexedDB || globalThis.webkitIndexedDB || globalThis.msIndexedDB;
|
|
21
|
-
/* 缓存数据库,避免同一个页面重复创建和销毁 */
|
|
22
|
-
#db: {
|
|
23
|
-
[key: string]: IDBDatabase;
|
|
24
|
-
} = {};
|
|
25
|
-
// #store: IDBObjectStore = null as any;
|
|
26
|
-
/** 状态码 */
|
|
27
|
-
#statusCode = {
|
|
28
|
-
operationSuccess: {
|
|
29
|
-
code: 200,
|
|
30
|
-
msg: "操作成功",
|
|
31
|
-
},
|
|
32
|
-
operationFailed: {
|
|
33
|
-
code: 401,
|
|
34
|
-
msg: "操作失败",
|
|
35
|
-
},
|
|
36
|
-
empty: {
|
|
37
|
-
code: 201,
|
|
38
|
-
msg: "操作成功,但是没有数据",
|
|
39
|
-
},
|
|
40
|
-
openFailed: { code: 91001, msg: "打开数据库失败" },
|
|
41
|
-
saveFailed: { code: 91002, msg: "保存数据失败" },
|
|
42
|
-
getFailed: { code: 91003, msg: "获取数据失败" },
|
|
43
|
-
deleteFailed: { code: 91004, msg: "删除数据失败" },
|
|
44
|
-
deleteAllFailed: { code: 91005, msg: "清空数据库失败" },
|
|
45
|
-
regexpGetFailed: { code: 91006, msg: "正则获取数据失败" },
|
|
46
|
-
};
|
|
47
|
-
/**
|
|
48
|
-
* @param dbName 数据存储名,默认为:default_db
|
|
49
|
-
* @param storeName 表名,默认为:default_form
|
|
50
|
-
* @param dbVersion indexDB的版本号,默认为:1
|
|
51
|
-
*/
|
|
52
|
-
constructor(dbName = "default_db", storeName = "default_form", dbVersion = 1) {
|
|
53
|
-
this.#dbName = dbName;
|
|
54
|
-
this.#storeName = storeName;
|
|
55
|
-
this.#dbVersion = dbVersion;
|
|
56
|
-
if (!this.#indexedDB) {
|
|
57
|
-
window.alert("很抱歉,您的浏览器不支持indexedDB");
|
|
58
|
-
throw new TypeError("很抱歉,您的浏览器不支持indexedDB");
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* 创建 “表”
|
|
63
|
-
* @param dbName 表名
|
|
64
|
-
*/
|
|
65
|
-
createStore(dbName: string) {
|
|
66
|
-
const txn = this.#db[dbName].transaction(this.#storeName, "readwrite") as IDBTransaction;
|
|
67
|
-
/* IndexDB的读写权限 */
|
|
68
|
-
const store = txn.objectStore(this.#storeName) as IDBObjectStore;
|
|
69
|
-
// this.#store = store;
|
|
70
|
-
return store;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* 打开数据库
|
|
74
|
-
* @param callback 回调
|
|
75
|
-
* @param dbName 数据库名
|
|
76
|
-
*/
|
|
77
|
-
private open(
|
|
78
|
-
callback: (
|
|
79
|
-
/** 数据库实例 */
|
|
80
|
-
idbStore: IDBObjectStore | null,
|
|
81
|
-
error?: UtilsIDBOpenErrorResult
|
|
82
|
-
) => void,
|
|
83
|
-
dbName: string
|
|
84
|
-
) {
|
|
85
|
-
const that = this;
|
|
86
|
-
/* 打开数据库 */
|
|
87
|
-
/* 如果支持IndexDB */
|
|
88
|
-
if (!that.#db[dbName]) {
|
|
89
|
-
/* 如果缓存中没有,则进行数据库的创建或打开,提高效率 */
|
|
90
|
-
const request = that.#indexedDB.open(dbName, that.#dbVersion);
|
|
91
|
-
request.onerror = function (event: any) {
|
|
92
|
-
callback(null, {
|
|
93
|
-
code: that.#statusCode.openFailed.code,
|
|
94
|
-
msg: that.#statusCode.openFailed.msg,
|
|
95
|
-
event: event,
|
|
96
|
-
});
|
|
97
|
-
};
|
|
98
|
-
request.onsuccess = function (event: Event) {
|
|
99
|
-
if (!that.#db[dbName]) {
|
|
100
|
-
const target = event.target as IDBRequest;
|
|
101
|
-
that.#db[dbName] = target.result;
|
|
102
|
-
}
|
|
103
|
-
const store = that.createStore(dbName);
|
|
104
|
-
callback(store);
|
|
105
|
-
};
|
|
106
|
-
request.onupgradeneeded = function (event: Event) {
|
|
107
|
-
const target = event.target as IDBRequest;
|
|
108
|
-
that.#db[dbName] = target.result;
|
|
109
|
-
const store = that.#db[dbName].createObjectStore(that.#storeName, {
|
|
110
|
-
keyPath: "key",
|
|
111
|
-
});
|
|
112
|
-
store.transaction.oncomplete = function () {
|
|
113
|
-
callback(store);
|
|
114
|
-
};
|
|
115
|
-
};
|
|
116
|
-
} else {
|
|
117
|
-
/* 如果缓存中已经打开了数据库,就直接使用 */
|
|
118
|
-
const store = this.createStore(dbName);
|
|
119
|
-
callback(store);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* 保存数据到数据库
|
|
124
|
-
* @param key 数据key
|
|
125
|
-
* @param value 数据值
|
|
126
|
-
*/
|
|
127
|
-
async save<T = any>(
|
|
128
|
-
key: string,
|
|
129
|
-
value: T
|
|
130
|
-
): Promise<{
|
|
131
|
-
/** 本操作是否成功 */
|
|
132
|
-
success: boolean;
|
|
133
|
-
/** 状态码 */
|
|
134
|
-
code: number;
|
|
135
|
-
/** 状态码对应的消息 */
|
|
136
|
-
msg: string;
|
|
137
|
-
/** 执行操作触发的事件,如果是在open阶段失败的话该值为空 */
|
|
138
|
-
event?: {
|
|
139
|
-
srcElement: IDBRequest<T>;
|
|
140
|
-
target: IDBRequest<T>;
|
|
141
|
-
} & Event;
|
|
142
|
-
}> {
|
|
143
|
-
const that = this;
|
|
144
|
-
return new Promise((resolve) => {
|
|
145
|
-
const dbName = this.#dbName;
|
|
146
|
-
const inData = {
|
|
147
|
-
key: key,
|
|
148
|
-
value: value,
|
|
149
|
-
};
|
|
150
|
-
this.open(function (idbStore) {
|
|
151
|
-
if (idbStore == null) {
|
|
152
|
-
resolve({
|
|
153
|
-
success: false,
|
|
154
|
-
code: that.#statusCode.saveFailed.code,
|
|
155
|
-
msg: that.#statusCode.saveFailed.msg,
|
|
156
|
-
});
|
|
157
|
-
} else {
|
|
158
|
-
const request = idbStore.put(inData);
|
|
159
|
-
request.onsuccess = function (event: any) {
|
|
160
|
-
/* 保存成功有success 字段 */
|
|
161
|
-
resolve({
|
|
162
|
-
success: true,
|
|
163
|
-
code: that.#statusCode.operationSuccess.code,
|
|
164
|
-
msg: that.#statusCode.operationSuccess.msg,
|
|
165
|
-
event: event,
|
|
166
|
-
});
|
|
167
|
-
};
|
|
168
|
-
request.onerror = function (event: any) {
|
|
169
|
-
resolve({
|
|
170
|
-
success: false,
|
|
171
|
-
code: that.#statusCode.saveFailed.code,
|
|
172
|
-
msg: that.#statusCode.saveFailed.msg,
|
|
173
|
-
event: event,
|
|
174
|
-
});
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
}, dbName);
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* 判断是否存在该数据
|
|
183
|
-
* @param key 数据key
|
|
184
|
-
*/
|
|
185
|
-
async has(key: string): Promise<{
|
|
186
|
-
/** 本操作是否成功 */
|
|
187
|
-
success: boolean;
|
|
188
|
-
/** 状态码 */
|
|
189
|
-
code: number;
|
|
190
|
-
/** 状态码对应的消息 */
|
|
191
|
-
msg: string;
|
|
192
|
-
/** 执行操作触发的事件,如果是在open阶段失败的话该值为空 */
|
|
193
|
-
event?: {
|
|
194
|
-
srcElement: IDBRequest;
|
|
195
|
-
target: IDBRequest;
|
|
196
|
-
} & Event;
|
|
197
|
-
}> {
|
|
198
|
-
const that = this;
|
|
199
|
-
return new Promise((resolve) => {
|
|
200
|
-
const dbName = this.#dbName;
|
|
201
|
-
this.open(function (idbStore) {
|
|
202
|
-
/* 判断返回的数据中是否有error字段 */
|
|
203
|
-
if (idbStore == null) {
|
|
204
|
-
resolve({
|
|
205
|
-
success: false,
|
|
206
|
-
code: that.#statusCode.getFailed.code,
|
|
207
|
-
msg: that.#statusCode.getFailed.msg,
|
|
208
|
-
});
|
|
209
|
-
} else {
|
|
210
|
-
const request = idbStore.get(key);
|
|
211
|
-
request.onsuccess = function (event: any) {
|
|
212
|
-
/* result 返回的是 {key: string, value: any} */
|
|
213
|
-
/* 键值对存储 */
|
|
214
|
-
resolve({
|
|
215
|
-
success: true,
|
|
216
|
-
code: that.#statusCode.operationSuccess.code,
|
|
217
|
-
msg: that.#statusCode.operationSuccess.msg,
|
|
218
|
-
event: event,
|
|
219
|
-
});
|
|
220
|
-
};
|
|
221
|
-
request.onerror = function (event: any) {
|
|
222
|
-
resolve({
|
|
223
|
-
success: false,
|
|
224
|
-
code: that.#statusCode.getFailed.code,
|
|
225
|
-
msg: that.#statusCode.getFailed.msg,
|
|
226
|
-
event: event,
|
|
227
|
-
});
|
|
228
|
-
};
|
|
229
|
-
}
|
|
230
|
-
}, dbName);
|
|
231
|
-
});
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* 根据key获取值
|
|
235
|
-
* @param key 数据key
|
|
236
|
-
*/
|
|
237
|
-
async get<T = any>(
|
|
238
|
-
key: string
|
|
239
|
-
): Promise<{
|
|
240
|
-
/** 本操作是否成功 */
|
|
241
|
-
success: boolean;
|
|
242
|
-
/** 状态码 */
|
|
243
|
-
code: number;
|
|
244
|
-
/** 状态码对应的消息 */
|
|
245
|
-
msg: string;
|
|
246
|
-
/** 获取的数据 */
|
|
247
|
-
data: T;
|
|
248
|
-
/** 执行操作触发的事件,如果是在open阶段失败的话该值为空 */
|
|
249
|
-
event?: {
|
|
250
|
-
srcElement: IDBRequest<T>;
|
|
251
|
-
target: IDBRequest<T>;
|
|
252
|
-
} & Event;
|
|
253
|
-
/** 获取的结果,里面的数据提取为data */
|
|
254
|
-
result?: {
|
|
255
|
-
key: string;
|
|
256
|
-
value: T;
|
|
257
|
-
};
|
|
258
|
-
}> {
|
|
259
|
-
const that = this;
|
|
260
|
-
return new Promise((resolve) => {
|
|
261
|
-
const dbName = this.#dbName;
|
|
262
|
-
this.open(function (idbStore) {
|
|
263
|
-
/* 判断返回的数据中是否有error字段 */
|
|
264
|
-
if (idbStore == null) {
|
|
265
|
-
resolve({
|
|
266
|
-
success: false,
|
|
267
|
-
code: that.#statusCode.getFailed.code,
|
|
268
|
-
msg: that.#statusCode.getFailed.msg,
|
|
269
|
-
data: void 0 as any,
|
|
270
|
-
});
|
|
271
|
-
} else {
|
|
272
|
-
const request = idbStore.get(key);
|
|
273
|
-
request.onsuccess = function (event: any) {
|
|
274
|
-
const target = event.target as IDBRequest;
|
|
275
|
-
const result = target.result as
|
|
276
|
-
| {
|
|
277
|
-
key: string;
|
|
278
|
-
value: T;
|
|
279
|
-
}
|
|
280
|
-
| undefined;
|
|
281
|
-
/* result 返回的是 {key: string, value: any} */
|
|
282
|
-
/* 键值对存储 */
|
|
283
|
-
const data = result ? result.value : void 0;
|
|
284
|
-
if (data == null) {
|
|
285
|
-
resolve({
|
|
286
|
-
success: true,
|
|
287
|
-
code: that.#statusCode.empty.code,
|
|
288
|
-
msg: that.#statusCode.empty.msg,
|
|
289
|
-
data: data!,
|
|
290
|
-
event: event,
|
|
291
|
-
result: result,
|
|
292
|
-
});
|
|
293
|
-
} else {
|
|
294
|
-
resolve({
|
|
295
|
-
success: true,
|
|
296
|
-
code: that.#statusCode.operationSuccess.code,
|
|
297
|
-
msg: that.#statusCode.operationSuccess.msg,
|
|
298
|
-
data: data,
|
|
299
|
-
event: event,
|
|
300
|
-
result: result,
|
|
301
|
-
});
|
|
302
|
-
}
|
|
303
|
-
};
|
|
304
|
-
request.onerror = function (event: any) {
|
|
305
|
-
resolve({
|
|
306
|
-
success: false,
|
|
307
|
-
code: that.#statusCode.getFailed.code,
|
|
308
|
-
msg: that.#statusCode.getFailed.msg,
|
|
309
|
-
data: void 0 as any,
|
|
310
|
-
|
|
311
|
-
event: event,
|
|
312
|
-
});
|
|
313
|
-
};
|
|
314
|
-
}
|
|
315
|
-
}, dbName);
|
|
316
|
-
});
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
/**
|
|
320
|
-
* 正则获取数据
|
|
321
|
-
* @param key 数据key,可以是正则
|
|
322
|
-
*/
|
|
323
|
-
async regexpGet<T = any>(
|
|
324
|
-
key: string | RegExp
|
|
325
|
-
): Promise<{
|
|
326
|
-
/** 本操作是否成功 */
|
|
327
|
-
success: boolean;
|
|
328
|
-
/** 状态码 */
|
|
329
|
-
code: number;
|
|
330
|
-
/** 状态码对应的消息 */
|
|
331
|
-
msg: string;
|
|
332
|
-
/** 获取到的数据列表 */
|
|
333
|
-
data: T[];
|
|
334
|
-
|
|
335
|
-
/** 执行操作触发的事件,如果是在open阶段失败的话该值为空 */
|
|
336
|
-
event?: {
|
|
337
|
-
srcElement: IDBRequest<T>;
|
|
338
|
-
target: IDBRequest<T>;
|
|
339
|
-
} & Event;
|
|
340
|
-
}> {
|
|
341
|
-
let list: T[] = [];
|
|
342
|
-
const that = this;
|
|
343
|
-
return new Promise((resolve) => {
|
|
344
|
-
/* 正则查询 */
|
|
345
|
-
const dbName = that.#dbName;
|
|
346
|
-
this.open(function (idbStore) {
|
|
347
|
-
/* 判断返回的数据中是否有error字段 */
|
|
348
|
-
if (idbStore == null) {
|
|
349
|
-
resolve({
|
|
350
|
-
success: false,
|
|
351
|
-
code: that.#statusCode.regexpGetFailed.code,
|
|
352
|
-
msg: that.#statusCode.regexpGetFailed.msg,
|
|
353
|
-
data: [],
|
|
354
|
-
});
|
|
355
|
-
} else {
|
|
356
|
-
const request = idbStore.getAll();
|
|
357
|
-
request.onsuccess = function (event: any) {
|
|
358
|
-
const target = event.target as IDBRequest<{ key: string; value: T }[]>;
|
|
359
|
-
const result = target.result;
|
|
360
|
-
if (result.length !== 0) {
|
|
361
|
-
result.forEach((dataItem) => {
|
|
362
|
-
// 当前项的key
|
|
363
|
-
const __key = dataItem["key"];
|
|
364
|
-
// 当前项的value
|
|
365
|
-
const __value = dataItem["value"];
|
|
366
|
-
if (__key.match(key)) {
|
|
367
|
-
list = list.concat(__value);
|
|
368
|
-
}
|
|
369
|
-
});
|
|
370
|
-
}
|
|
371
|
-
resolve({
|
|
372
|
-
success: true,
|
|
373
|
-
code: that.#statusCode.operationSuccess.code,
|
|
374
|
-
msg: that.#statusCode.operationSuccess.msg,
|
|
375
|
-
data: list,
|
|
376
|
-
|
|
377
|
-
event: event,
|
|
378
|
-
});
|
|
379
|
-
};
|
|
380
|
-
request.onerror = function (event: any) {
|
|
381
|
-
resolve({
|
|
382
|
-
success: false,
|
|
383
|
-
code: that.#statusCode.getFailed.code,
|
|
384
|
-
msg: that.#statusCode.getFailed.msg,
|
|
385
|
-
data: [],
|
|
386
|
-
|
|
387
|
-
event: event,
|
|
388
|
-
});
|
|
389
|
-
};
|
|
390
|
-
}
|
|
391
|
-
}, dbName);
|
|
392
|
-
});
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
/**
|
|
396
|
-
* 删除数据
|
|
397
|
-
* @param key 数据key
|
|
398
|
-
*/
|
|
399
|
-
async delete(key: string): Promise<{
|
|
400
|
-
/** 本操作是否成功 */
|
|
401
|
-
success: boolean;
|
|
402
|
-
/** 状态码 */
|
|
403
|
-
code: number;
|
|
404
|
-
/** 状态码对应的消息 */
|
|
405
|
-
msg: string;
|
|
406
|
-
/** 执行操作触发的事件,如果是在open阶段失败的话该值为空 */
|
|
407
|
-
event?: {
|
|
408
|
-
srcElement: IDBRequest;
|
|
409
|
-
target: IDBRequest;
|
|
410
|
-
} & Event;
|
|
411
|
-
}> {
|
|
412
|
-
const that = this;
|
|
413
|
-
return new Promise((resolve) => {
|
|
414
|
-
/* 根据key删除某条数据 */
|
|
415
|
-
const dbName = that.#dbName;
|
|
416
|
-
this.open(function (idbStore) {
|
|
417
|
-
if (idbStore == null) {
|
|
418
|
-
resolve({
|
|
419
|
-
success: false,
|
|
420
|
-
code: that.#statusCode.deleteFailed.code,
|
|
421
|
-
msg: that.#statusCode.deleteFailed.msg,
|
|
422
|
-
});
|
|
423
|
-
} else {
|
|
424
|
-
// 删除键
|
|
425
|
-
const request = idbStore.delete(key);
|
|
426
|
-
request.onsuccess = function (event: any) {
|
|
427
|
-
resolve({
|
|
428
|
-
success: true,
|
|
429
|
-
code: that.#statusCode.operationSuccess.code,
|
|
430
|
-
msg: that.#statusCode.operationSuccess.msg,
|
|
431
|
-
event: event,
|
|
432
|
-
});
|
|
433
|
-
};
|
|
434
|
-
request.onerror = function (event: any) {
|
|
435
|
-
resolve({
|
|
436
|
-
success: false,
|
|
437
|
-
code: that.#statusCode.deleteFailed.code,
|
|
438
|
-
msg: that.#statusCode.deleteFailed.msg,
|
|
439
|
-
event: event,
|
|
440
|
-
});
|
|
441
|
-
};
|
|
442
|
-
}
|
|
443
|
-
}, dbName);
|
|
444
|
-
});
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
/**
|
|
448
|
-
* 删除所有数据
|
|
449
|
-
*/
|
|
450
|
-
async deleteAll(): Promise<{
|
|
451
|
-
/** 本操作是否成功 */
|
|
452
|
-
success: boolean;
|
|
453
|
-
/** 状态码 */
|
|
454
|
-
code: number;
|
|
455
|
-
/** 状态码对应的消息 */
|
|
456
|
-
msg: string;
|
|
457
|
-
/** 执行操作触发的事件,如果是在open阶段失败的话该值为空 */
|
|
458
|
-
event?: {
|
|
459
|
-
srcElement: IDBRequest;
|
|
460
|
-
target: IDBRequest;
|
|
461
|
-
} & Event;
|
|
462
|
-
}> {
|
|
463
|
-
const that = this;
|
|
464
|
-
return new Promise((resolve) => {
|
|
465
|
-
/* 清空数据库 */
|
|
466
|
-
const dbName = that.#dbName;
|
|
467
|
-
this.open(function (idbStore) {
|
|
468
|
-
if (idbStore == null) {
|
|
469
|
-
resolve({
|
|
470
|
-
success: false,
|
|
471
|
-
code: that.#statusCode.deleteAllFailed.code,
|
|
472
|
-
msg: that.#statusCode.deleteAllFailed.msg,
|
|
473
|
-
});
|
|
474
|
-
} else {
|
|
475
|
-
// 清空
|
|
476
|
-
const operateResult = idbStore.clear();
|
|
477
|
-
operateResult.onsuccess = function (event: any) {
|
|
478
|
-
resolve({
|
|
479
|
-
success: true,
|
|
480
|
-
code: that.#statusCode.operationSuccess.code,
|
|
481
|
-
msg: that.#statusCode.operationSuccess.msg,
|
|
482
|
-
event: event,
|
|
483
|
-
});
|
|
484
|
-
};
|
|
485
|
-
operateResult.onerror = function (event: any) {
|
|
486
|
-
resolve({
|
|
487
|
-
success: false,
|
|
488
|
-
code: that.#statusCode.deleteAllFailed.code,
|
|
489
|
-
msg: that.#statusCode.deleteAllFailed.msg,
|
|
490
|
-
event: event,
|
|
491
|
-
});
|
|
492
|
-
};
|
|
493
|
-
}
|
|
494
|
-
}, dbName);
|
|
495
|
-
});
|
|
496
|
-
}
|
|
497
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* indexedDB 错误结果
|
|
3
|
+
*/
|
|
4
|
+
declare interface UtilsIDBOpenErrorResult {
|
|
5
|
+
code: number;
|
|
6
|
+
msg: string;
|
|
7
|
+
event: {
|
|
8
|
+
srcElement: IDBRequest;
|
|
9
|
+
target: IDBRequest;
|
|
10
|
+
} & Event;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export class indexedDB {
|
|
14
|
+
#dbName: string;
|
|
15
|
+
#storeName: string;
|
|
16
|
+
#dbVersion: number;
|
|
17
|
+
/* websql的版本号,由于ios的问题,版本号的写法不一样 */
|
|
18
|
+
// #slqVersion = "1";
|
|
19
|
+
/* 监听IndexDB */
|
|
20
|
+
#indexedDB = globalThis.indexedDB || globalThis.mozIndexedDB || globalThis.webkitIndexedDB || globalThis.msIndexedDB;
|
|
21
|
+
/* 缓存数据库,避免同一个页面重复创建和销毁 */
|
|
22
|
+
#db: {
|
|
23
|
+
[key: string]: IDBDatabase;
|
|
24
|
+
} = {};
|
|
25
|
+
// #store: IDBObjectStore = null as any;
|
|
26
|
+
/** 状态码 */
|
|
27
|
+
#statusCode = {
|
|
28
|
+
operationSuccess: {
|
|
29
|
+
code: 200,
|
|
30
|
+
msg: "操作成功",
|
|
31
|
+
},
|
|
32
|
+
operationFailed: {
|
|
33
|
+
code: 401,
|
|
34
|
+
msg: "操作失败",
|
|
35
|
+
},
|
|
36
|
+
empty: {
|
|
37
|
+
code: 201,
|
|
38
|
+
msg: "操作成功,但是没有数据",
|
|
39
|
+
},
|
|
40
|
+
openFailed: { code: 91001, msg: "打开数据库失败" },
|
|
41
|
+
saveFailed: { code: 91002, msg: "保存数据失败" },
|
|
42
|
+
getFailed: { code: 91003, msg: "获取数据失败" },
|
|
43
|
+
deleteFailed: { code: 91004, msg: "删除数据失败" },
|
|
44
|
+
deleteAllFailed: { code: 91005, msg: "清空数据库失败" },
|
|
45
|
+
regexpGetFailed: { code: 91006, msg: "正则获取数据失败" },
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* @param dbName 数据存储名,默认为:default_db
|
|
49
|
+
* @param storeName 表名,默认为:default_form
|
|
50
|
+
* @param dbVersion indexDB的版本号,默认为:1
|
|
51
|
+
*/
|
|
52
|
+
constructor(dbName = "default_db", storeName = "default_form", dbVersion = 1) {
|
|
53
|
+
this.#dbName = dbName;
|
|
54
|
+
this.#storeName = storeName;
|
|
55
|
+
this.#dbVersion = dbVersion;
|
|
56
|
+
if (!this.#indexedDB) {
|
|
57
|
+
window.alert("很抱歉,您的浏览器不支持indexedDB");
|
|
58
|
+
throw new TypeError("很抱歉,您的浏览器不支持indexedDB");
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* 创建 “表”
|
|
63
|
+
* @param dbName 表名
|
|
64
|
+
*/
|
|
65
|
+
createStore(dbName: string) {
|
|
66
|
+
const txn = this.#db[dbName].transaction(this.#storeName, "readwrite") as IDBTransaction;
|
|
67
|
+
/* IndexDB的读写权限 */
|
|
68
|
+
const store = txn.objectStore(this.#storeName) as IDBObjectStore;
|
|
69
|
+
// this.#store = store;
|
|
70
|
+
return store;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 打开数据库
|
|
74
|
+
* @param callback 回调
|
|
75
|
+
* @param dbName 数据库名
|
|
76
|
+
*/
|
|
77
|
+
private open(
|
|
78
|
+
callback: (
|
|
79
|
+
/** 数据库实例 */
|
|
80
|
+
idbStore: IDBObjectStore | null,
|
|
81
|
+
error?: UtilsIDBOpenErrorResult
|
|
82
|
+
) => void,
|
|
83
|
+
dbName: string
|
|
84
|
+
) {
|
|
85
|
+
const that = this;
|
|
86
|
+
/* 打开数据库 */
|
|
87
|
+
/* 如果支持IndexDB */
|
|
88
|
+
if (!that.#db[dbName]) {
|
|
89
|
+
/* 如果缓存中没有,则进行数据库的创建或打开,提高效率 */
|
|
90
|
+
const request = that.#indexedDB.open(dbName, that.#dbVersion);
|
|
91
|
+
request.onerror = function (event: any) {
|
|
92
|
+
callback(null, {
|
|
93
|
+
code: that.#statusCode.openFailed.code,
|
|
94
|
+
msg: that.#statusCode.openFailed.msg,
|
|
95
|
+
event: event,
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
request.onsuccess = function (event: Event) {
|
|
99
|
+
if (!that.#db[dbName]) {
|
|
100
|
+
const target = event.target as IDBRequest;
|
|
101
|
+
that.#db[dbName] = target.result;
|
|
102
|
+
}
|
|
103
|
+
const store = that.createStore(dbName);
|
|
104
|
+
callback(store);
|
|
105
|
+
};
|
|
106
|
+
request.onupgradeneeded = function (event: Event) {
|
|
107
|
+
const target = event.target as IDBRequest;
|
|
108
|
+
that.#db[dbName] = target.result;
|
|
109
|
+
const store = that.#db[dbName].createObjectStore(that.#storeName, {
|
|
110
|
+
keyPath: "key",
|
|
111
|
+
});
|
|
112
|
+
store.transaction.oncomplete = function () {
|
|
113
|
+
callback(store);
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
} else {
|
|
117
|
+
/* 如果缓存中已经打开了数据库,就直接使用 */
|
|
118
|
+
const store = this.createStore(dbName);
|
|
119
|
+
callback(store);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* 保存数据到数据库
|
|
124
|
+
* @param key 数据key
|
|
125
|
+
* @param value 数据值
|
|
126
|
+
*/
|
|
127
|
+
async save<T = any>(
|
|
128
|
+
key: string,
|
|
129
|
+
value: T
|
|
130
|
+
): Promise<{
|
|
131
|
+
/** 本操作是否成功 */
|
|
132
|
+
success: boolean;
|
|
133
|
+
/** 状态码 */
|
|
134
|
+
code: number;
|
|
135
|
+
/** 状态码对应的消息 */
|
|
136
|
+
msg: string;
|
|
137
|
+
/** 执行操作触发的事件,如果是在open阶段失败的话该值为空 */
|
|
138
|
+
event?: {
|
|
139
|
+
srcElement: IDBRequest<T>;
|
|
140
|
+
target: IDBRequest<T>;
|
|
141
|
+
} & Event;
|
|
142
|
+
}> {
|
|
143
|
+
const that = this;
|
|
144
|
+
return new Promise((resolve) => {
|
|
145
|
+
const dbName = this.#dbName;
|
|
146
|
+
const inData = {
|
|
147
|
+
key: key,
|
|
148
|
+
value: value,
|
|
149
|
+
};
|
|
150
|
+
this.open(function (idbStore) {
|
|
151
|
+
if (idbStore == null) {
|
|
152
|
+
resolve({
|
|
153
|
+
success: false,
|
|
154
|
+
code: that.#statusCode.saveFailed.code,
|
|
155
|
+
msg: that.#statusCode.saveFailed.msg,
|
|
156
|
+
});
|
|
157
|
+
} else {
|
|
158
|
+
const request = idbStore.put(inData);
|
|
159
|
+
request.onsuccess = function (event: any) {
|
|
160
|
+
/* 保存成功有success 字段 */
|
|
161
|
+
resolve({
|
|
162
|
+
success: true,
|
|
163
|
+
code: that.#statusCode.operationSuccess.code,
|
|
164
|
+
msg: that.#statusCode.operationSuccess.msg,
|
|
165
|
+
event: event,
|
|
166
|
+
});
|
|
167
|
+
};
|
|
168
|
+
request.onerror = function (event: any) {
|
|
169
|
+
resolve({
|
|
170
|
+
success: false,
|
|
171
|
+
code: that.#statusCode.saveFailed.code,
|
|
172
|
+
msg: that.#statusCode.saveFailed.msg,
|
|
173
|
+
event: event,
|
|
174
|
+
});
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
}, dbName);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* 判断是否存在该数据
|
|
183
|
+
* @param key 数据key
|
|
184
|
+
*/
|
|
185
|
+
async has(key: string): Promise<{
|
|
186
|
+
/** 本操作是否成功 */
|
|
187
|
+
success: boolean;
|
|
188
|
+
/** 状态码 */
|
|
189
|
+
code: number;
|
|
190
|
+
/** 状态码对应的消息 */
|
|
191
|
+
msg: string;
|
|
192
|
+
/** 执行操作触发的事件,如果是在open阶段失败的话该值为空 */
|
|
193
|
+
event?: {
|
|
194
|
+
srcElement: IDBRequest;
|
|
195
|
+
target: IDBRequest;
|
|
196
|
+
} & Event;
|
|
197
|
+
}> {
|
|
198
|
+
const that = this;
|
|
199
|
+
return new Promise((resolve) => {
|
|
200
|
+
const dbName = this.#dbName;
|
|
201
|
+
this.open(function (idbStore) {
|
|
202
|
+
/* 判断返回的数据中是否有error字段 */
|
|
203
|
+
if (idbStore == null) {
|
|
204
|
+
resolve({
|
|
205
|
+
success: false,
|
|
206
|
+
code: that.#statusCode.getFailed.code,
|
|
207
|
+
msg: that.#statusCode.getFailed.msg,
|
|
208
|
+
});
|
|
209
|
+
} else {
|
|
210
|
+
const request = idbStore.get(key);
|
|
211
|
+
request.onsuccess = function (event: any) {
|
|
212
|
+
/* result 返回的是 {key: string, value: any} */
|
|
213
|
+
/* 键值对存储 */
|
|
214
|
+
resolve({
|
|
215
|
+
success: true,
|
|
216
|
+
code: that.#statusCode.operationSuccess.code,
|
|
217
|
+
msg: that.#statusCode.operationSuccess.msg,
|
|
218
|
+
event: event,
|
|
219
|
+
});
|
|
220
|
+
};
|
|
221
|
+
request.onerror = function (event: any) {
|
|
222
|
+
resolve({
|
|
223
|
+
success: false,
|
|
224
|
+
code: that.#statusCode.getFailed.code,
|
|
225
|
+
msg: that.#statusCode.getFailed.msg,
|
|
226
|
+
event: event,
|
|
227
|
+
});
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
}, dbName);
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* 根据key获取值
|
|
235
|
+
* @param key 数据key
|
|
236
|
+
*/
|
|
237
|
+
async get<T = any>(
|
|
238
|
+
key: string
|
|
239
|
+
): Promise<{
|
|
240
|
+
/** 本操作是否成功 */
|
|
241
|
+
success: boolean;
|
|
242
|
+
/** 状态码 */
|
|
243
|
+
code: number;
|
|
244
|
+
/** 状态码对应的消息 */
|
|
245
|
+
msg: string;
|
|
246
|
+
/** 获取的数据 */
|
|
247
|
+
data: T;
|
|
248
|
+
/** 执行操作触发的事件,如果是在open阶段失败的话该值为空 */
|
|
249
|
+
event?: {
|
|
250
|
+
srcElement: IDBRequest<T>;
|
|
251
|
+
target: IDBRequest<T>;
|
|
252
|
+
} & Event;
|
|
253
|
+
/** 获取的结果,里面的数据提取为data */
|
|
254
|
+
result?: {
|
|
255
|
+
key: string;
|
|
256
|
+
value: T;
|
|
257
|
+
};
|
|
258
|
+
}> {
|
|
259
|
+
const that = this;
|
|
260
|
+
return new Promise((resolve) => {
|
|
261
|
+
const dbName = this.#dbName;
|
|
262
|
+
this.open(function (idbStore) {
|
|
263
|
+
/* 判断返回的数据中是否有error字段 */
|
|
264
|
+
if (idbStore == null) {
|
|
265
|
+
resolve({
|
|
266
|
+
success: false,
|
|
267
|
+
code: that.#statusCode.getFailed.code,
|
|
268
|
+
msg: that.#statusCode.getFailed.msg,
|
|
269
|
+
data: void 0 as any,
|
|
270
|
+
});
|
|
271
|
+
} else {
|
|
272
|
+
const request = idbStore.get(key);
|
|
273
|
+
request.onsuccess = function (event: any) {
|
|
274
|
+
const target = event.target as IDBRequest;
|
|
275
|
+
const result = target.result as
|
|
276
|
+
| {
|
|
277
|
+
key: string;
|
|
278
|
+
value: T;
|
|
279
|
+
}
|
|
280
|
+
| undefined;
|
|
281
|
+
/* result 返回的是 {key: string, value: any} */
|
|
282
|
+
/* 键值对存储 */
|
|
283
|
+
const data = result ? result.value : void 0;
|
|
284
|
+
if (data == null) {
|
|
285
|
+
resolve({
|
|
286
|
+
success: true,
|
|
287
|
+
code: that.#statusCode.empty.code,
|
|
288
|
+
msg: that.#statusCode.empty.msg,
|
|
289
|
+
data: data!,
|
|
290
|
+
event: event,
|
|
291
|
+
result: result,
|
|
292
|
+
});
|
|
293
|
+
} else {
|
|
294
|
+
resolve({
|
|
295
|
+
success: true,
|
|
296
|
+
code: that.#statusCode.operationSuccess.code,
|
|
297
|
+
msg: that.#statusCode.operationSuccess.msg,
|
|
298
|
+
data: data,
|
|
299
|
+
event: event,
|
|
300
|
+
result: result,
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
};
|
|
304
|
+
request.onerror = function (event: any) {
|
|
305
|
+
resolve({
|
|
306
|
+
success: false,
|
|
307
|
+
code: that.#statusCode.getFailed.code,
|
|
308
|
+
msg: that.#statusCode.getFailed.msg,
|
|
309
|
+
data: void 0 as any,
|
|
310
|
+
|
|
311
|
+
event: event,
|
|
312
|
+
});
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
}, dbName);
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* 正则获取数据
|
|
321
|
+
* @param key 数据key,可以是正则
|
|
322
|
+
*/
|
|
323
|
+
async regexpGet<T = any>(
|
|
324
|
+
key: string | RegExp
|
|
325
|
+
): Promise<{
|
|
326
|
+
/** 本操作是否成功 */
|
|
327
|
+
success: boolean;
|
|
328
|
+
/** 状态码 */
|
|
329
|
+
code: number;
|
|
330
|
+
/** 状态码对应的消息 */
|
|
331
|
+
msg: string;
|
|
332
|
+
/** 获取到的数据列表 */
|
|
333
|
+
data: T[];
|
|
334
|
+
|
|
335
|
+
/** 执行操作触发的事件,如果是在open阶段失败的话该值为空 */
|
|
336
|
+
event?: {
|
|
337
|
+
srcElement: IDBRequest<T>;
|
|
338
|
+
target: IDBRequest<T>;
|
|
339
|
+
} & Event;
|
|
340
|
+
}> {
|
|
341
|
+
let list: T[] = [];
|
|
342
|
+
const that = this;
|
|
343
|
+
return new Promise((resolve) => {
|
|
344
|
+
/* 正则查询 */
|
|
345
|
+
const dbName = that.#dbName;
|
|
346
|
+
this.open(function (idbStore) {
|
|
347
|
+
/* 判断返回的数据中是否有error字段 */
|
|
348
|
+
if (idbStore == null) {
|
|
349
|
+
resolve({
|
|
350
|
+
success: false,
|
|
351
|
+
code: that.#statusCode.regexpGetFailed.code,
|
|
352
|
+
msg: that.#statusCode.regexpGetFailed.msg,
|
|
353
|
+
data: [],
|
|
354
|
+
});
|
|
355
|
+
} else {
|
|
356
|
+
const request = idbStore.getAll();
|
|
357
|
+
request.onsuccess = function (event: any) {
|
|
358
|
+
const target = event.target as IDBRequest<{ key: string; value: T }[]>;
|
|
359
|
+
const result = target.result;
|
|
360
|
+
if (result.length !== 0) {
|
|
361
|
+
result.forEach((dataItem) => {
|
|
362
|
+
// 当前项的key
|
|
363
|
+
const __key = dataItem["key"];
|
|
364
|
+
// 当前项的value
|
|
365
|
+
const __value = dataItem["value"];
|
|
366
|
+
if (__key.match(key)) {
|
|
367
|
+
list = list.concat(__value);
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
resolve({
|
|
372
|
+
success: true,
|
|
373
|
+
code: that.#statusCode.operationSuccess.code,
|
|
374
|
+
msg: that.#statusCode.operationSuccess.msg,
|
|
375
|
+
data: list,
|
|
376
|
+
|
|
377
|
+
event: event,
|
|
378
|
+
});
|
|
379
|
+
};
|
|
380
|
+
request.onerror = function (event: any) {
|
|
381
|
+
resolve({
|
|
382
|
+
success: false,
|
|
383
|
+
code: that.#statusCode.getFailed.code,
|
|
384
|
+
msg: that.#statusCode.getFailed.msg,
|
|
385
|
+
data: [],
|
|
386
|
+
|
|
387
|
+
event: event,
|
|
388
|
+
});
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
}, dbName);
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* 删除数据
|
|
397
|
+
* @param key 数据key
|
|
398
|
+
*/
|
|
399
|
+
async delete(key: string): Promise<{
|
|
400
|
+
/** 本操作是否成功 */
|
|
401
|
+
success: boolean;
|
|
402
|
+
/** 状态码 */
|
|
403
|
+
code: number;
|
|
404
|
+
/** 状态码对应的消息 */
|
|
405
|
+
msg: string;
|
|
406
|
+
/** 执行操作触发的事件,如果是在open阶段失败的话该值为空 */
|
|
407
|
+
event?: {
|
|
408
|
+
srcElement: IDBRequest;
|
|
409
|
+
target: IDBRequest;
|
|
410
|
+
} & Event;
|
|
411
|
+
}> {
|
|
412
|
+
const that = this;
|
|
413
|
+
return new Promise((resolve) => {
|
|
414
|
+
/* 根据key删除某条数据 */
|
|
415
|
+
const dbName = that.#dbName;
|
|
416
|
+
this.open(function (idbStore) {
|
|
417
|
+
if (idbStore == null) {
|
|
418
|
+
resolve({
|
|
419
|
+
success: false,
|
|
420
|
+
code: that.#statusCode.deleteFailed.code,
|
|
421
|
+
msg: that.#statusCode.deleteFailed.msg,
|
|
422
|
+
});
|
|
423
|
+
} else {
|
|
424
|
+
// 删除键
|
|
425
|
+
const request = idbStore.delete(key);
|
|
426
|
+
request.onsuccess = function (event: any) {
|
|
427
|
+
resolve({
|
|
428
|
+
success: true,
|
|
429
|
+
code: that.#statusCode.operationSuccess.code,
|
|
430
|
+
msg: that.#statusCode.operationSuccess.msg,
|
|
431
|
+
event: event,
|
|
432
|
+
});
|
|
433
|
+
};
|
|
434
|
+
request.onerror = function (event: any) {
|
|
435
|
+
resolve({
|
|
436
|
+
success: false,
|
|
437
|
+
code: that.#statusCode.deleteFailed.code,
|
|
438
|
+
msg: that.#statusCode.deleteFailed.msg,
|
|
439
|
+
event: event,
|
|
440
|
+
});
|
|
441
|
+
};
|
|
442
|
+
}
|
|
443
|
+
}, dbName);
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
/**
|
|
448
|
+
* 删除所有数据
|
|
449
|
+
*/
|
|
450
|
+
async deleteAll(): Promise<{
|
|
451
|
+
/** 本操作是否成功 */
|
|
452
|
+
success: boolean;
|
|
453
|
+
/** 状态码 */
|
|
454
|
+
code: number;
|
|
455
|
+
/** 状态码对应的消息 */
|
|
456
|
+
msg: string;
|
|
457
|
+
/** 执行操作触发的事件,如果是在open阶段失败的话该值为空 */
|
|
458
|
+
event?: {
|
|
459
|
+
srcElement: IDBRequest;
|
|
460
|
+
target: IDBRequest;
|
|
461
|
+
} & Event;
|
|
462
|
+
}> {
|
|
463
|
+
const that = this;
|
|
464
|
+
return new Promise((resolve) => {
|
|
465
|
+
/* 清空数据库 */
|
|
466
|
+
const dbName = that.#dbName;
|
|
467
|
+
this.open(function (idbStore) {
|
|
468
|
+
if (idbStore == null) {
|
|
469
|
+
resolve({
|
|
470
|
+
success: false,
|
|
471
|
+
code: that.#statusCode.deleteAllFailed.code,
|
|
472
|
+
msg: that.#statusCode.deleteAllFailed.msg,
|
|
473
|
+
});
|
|
474
|
+
} else {
|
|
475
|
+
// 清空
|
|
476
|
+
const operateResult = idbStore.clear();
|
|
477
|
+
operateResult.onsuccess = function (event: any) {
|
|
478
|
+
resolve({
|
|
479
|
+
success: true,
|
|
480
|
+
code: that.#statusCode.operationSuccess.code,
|
|
481
|
+
msg: that.#statusCode.operationSuccess.msg,
|
|
482
|
+
event: event,
|
|
483
|
+
});
|
|
484
|
+
};
|
|
485
|
+
operateResult.onerror = function (event: any) {
|
|
486
|
+
resolve({
|
|
487
|
+
success: false,
|
|
488
|
+
code: that.#statusCode.deleteAllFailed.code,
|
|
489
|
+
msg: that.#statusCode.deleteAllFailed.msg,
|
|
490
|
+
event: event,
|
|
491
|
+
});
|
|
492
|
+
};
|
|
493
|
+
}
|
|
494
|
+
}, dbName);
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
}
|