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