@vope/utils 1.4.26 → 1.4.28

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/cjs/index.js CHANGED
@@ -9,8 +9,8 @@ var __commonJS = (cb, mod) => function __require() {
9
9
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
10
10
  };
11
11
  var __export = (target, all) => {
12
- for (var name2 in all)
13
- __defProp(target, name2, { get: all[name2], enumerable: true });
12
+ for (var name in all)
13
+ __defProp(target, name, { get: all[name], enumerable: true });
14
14
  };
15
15
  var __copyProps = (to, from, except, desc) => {
16
16
  if (from && typeof from === "object" || typeof from === "function") {
@@ -5484,6 +5484,16 @@ var MemoryBasic = class {
5484
5484
  });
5485
5485
  return this;
5486
5486
  }
5487
+ /**
5488
+ * 返回位于指定索引处的项
5489
+ */
5490
+ at(index) {
5491
+ const { list } = this;
5492
+ if (index < 0) {
5493
+ index += list.length;
5494
+ }
5495
+ return this.list.at(index);
5496
+ }
5487
5497
  /**
5488
5498
  * 遍历所有存储数据(按入栈顺序)
5489
5499
  */
@@ -5664,6 +5674,12 @@ var MemorySimple = class {
5664
5674
  const key2 = this.#key;
5665
5675
  return typeof key2 === "function" ? key2(data) : data[key2];
5666
5676
  }
5677
+ /**
5678
+ * 返回位于指定索引处的项
5679
+ */
5680
+ at(index) {
5681
+ return this.#memory.at(index);
5682
+ }
5667
5683
  push(...list) {
5668
5684
  const memory = this.#memory;
5669
5685
  list.forEach((data) => {
@@ -6164,13 +6180,11 @@ var flatURLParams = (data, serializes) => {
6164
6180
  return params.toString();
6165
6181
  };
6166
6182
 
6167
- // package.json
6168
- var name = "@vope/utils";
6169
-
6170
6183
  // src/storage/offline.ts
6171
6184
  var import_localforage = __toESM(require_localforage(), 1);
6172
6185
  var import_sm_crypto = __toESM(require_src(), 1);
6173
- var PREFIX = name + "_";
6186
+ var NAME = "@vope/utils";
6187
+ var PREFIX = NAME + "_";
6174
6188
  var key = [25, 144, 1, 32, 25, 135, 6, 40, 32, 23, 18, 19, 32, 36, 9, 5];
6175
6189
  var iv = [182, 59, 9, 29, 86, 64, 118, 111, 112, 101, 47, 117, 116, 105, 108, 115];
6176
6190
  var config = {
@@ -6178,7 +6192,7 @@ var config = {
6178
6192
  mode: "cbc",
6179
6193
  iv
6180
6194
  };
6181
- var HEADER = "." + import_sm_crypto.sm4.encrypt(name, key, config);
6195
+ var HEADER = "." + import_sm_crypto.sm4.encrypt(NAME, key, config);
6182
6196
  var encrypt = (data) => {
6183
6197
  let text = "";
6184
6198
  for (const key2 in data) {
@@ -6217,9 +6231,9 @@ var MESSAGES = {
6217
6231
  update: "Cannot update data to expired databases",
6218
6232
  get: "Cannot get data from expired databases"
6219
6233
  };
6220
- var createInstance = (name2, version = 2) => import_localforage.default.createInstance({
6234
+ var createInstance = (name, version = 2) => import_localforage.default.createInstance({
6221
6235
  driver: import_localforage.default.INDEXEDDB,
6222
- name: name2,
6236
+ name,
6223
6237
  version
6224
6238
  });
6225
6239
  var OfflineStorage = class _OfflineStorage {
@@ -6237,12 +6251,12 @@ var OfflineStorage = class _OfflineStorage {
6237
6251
  return this.#mounted;
6238
6252
  }
6239
6253
  constructor({
6240
- name: name2,
6254
+ name,
6241
6255
  expire: newExpire,
6242
6256
  token: newToken,
6243
6257
  crypto
6244
6258
  }) {
6245
- const forage = this.#forage = createInstance(import_sm_crypto.sm4.encrypt(PREFIX + name2, key, config));
6259
+ const forage = this.#forage = createInstance(import_sm_crypto.sm4.encrypt(PREFIX + name, key, config));
6246
6260
  this.#mount = new Promise(async (resolve) => {
6247
6261
  const keys = await forage.keys().then((keys2) => keys2).catch(() => []);
6248
6262
  let size = 0;
@@ -6371,18 +6385,18 @@ var OfflineStorage = class _OfflineStorage {
6371
6385
  const size = PREFIX.length;
6372
6386
  const databases = await indexedDB.databases();
6373
6387
  const tasks = [];
6374
- for (const { name: name2, version } of databases) {
6375
- if (name2 === void 0)
6388
+ for (const { name, version } of databases) {
6389
+ if (name === void 0)
6376
6390
  continue;
6377
6391
  let text;
6378
6392
  try {
6379
- text = import_sm_crypto.sm4.decrypt(name2, key, config);
6393
+ text = import_sm_crypto.sm4.decrypt(name, key, config);
6380
6394
  } catch {
6381
6395
  continue;
6382
6396
  }
6383
6397
  if (text.slice(0, size) !== PREFIX)
6384
6398
  continue;
6385
- const forage = createInstance(name2, version);
6399
+ const forage = createInstance(name, version);
6386
6400
  const value = await forage.getItem(HEADER);
6387
6401
  if (value === null || decrypt(value).token !== token || callback && callback(text.slice(size)))
6388
6402
  continue;
@@ -6423,61 +6437,61 @@ var css = (...args) => {
6423
6437
  var Subscriber = class {
6424
6438
  #listeners = {};
6425
6439
  #once = {};
6426
- $on(name2, listener) {
6440
+ $on(name, listener) {
6427
6441
  const listeners = this.#listeners;
6428
- if (name2 in listeners) {
6429
- listeners[name2].push(listener);
6442
+ if (name in listeners) {
6443
+ listeners[name].push(listener);
6430
6444
  } else {
6431
- listeners[name2] = [listener];
6445
+ listeners[name] = [listener];
6432
6446
  }
6433
6447
  return this;
6434
6448
  }
6435
- $once(name2, listener) {
6436
- this.$on(name2, listener);
6437
- const index = this.#listeners[name2].length - 1;
6449
+ $once(name, listener) {
6450
+ this.$on(name, listener);
6451
+ const index = this.#listeners[name].length - 1;
6438
6452
  const once2 = this.#once;
6439
- if (name2 in once2) {
6440
- once2[name2].push(index);
6453
+ if (name in once2) {
6454
+ once2[name].push(index);
6441
6455
  } else {
6442
- once2[name2] = [index];
6456
+ once2[name] = [index];
6443
6457
  }
6444
6458
  return this;
6445
6459
  }
6446
- $emit(name2, ...args) {
6447
- const listeners = this.#listeners[name2];
6460
+ $emit(name, ...args) {
6461
+ const listeners = this.#listeners[name];
6448
6462
  if (!listeners)
6449
6463
  return this;
6450
- const once2 = hash8strings(this.#once[name2] || []);
6451
- this.#listeners[name2] = listeners.reduce((list, listener, index) => {
6464
+ const once2 = hash8strings(this.#once[name] || []);
6465
+ this.#listeners[name] = listeners.reduce((list, listener, index) => {
6452
6466
  listener(...args);
6453
6467
  index in once2 || list.push(listener);
6454
6468
  return list;
6455
6469
  }, []);
6456
- delete this.#once[name2];
6470
+ delete this.#once[name];
6457
6471
  return this;
6458
6472
  }
6459
- $off(name2, listener) {
6473
+ $off(name, listener) {
6460
6474
  const listeners = this.#listeners;
6461
6475
  const once2 = this.#once;
6462
- if (name2 in listeners === false)
6476
+ if (name in listeners === false)
6463
6477
  return this;
6464
6478
  if (listener) {
6465
6479
  let count;
6466
- listeners[name2].some((value, index) => {
6480
+ listeners[name].some((value, index) => {
6467
6481
  if (value === listener) {
6468
6482
  count = index;
6469
- listeners[name2].splice(index, 1);
6483
+ listeners[name].splice(index, 1);
6470
6484
  return true;
6471
6485
  }
6472
- }) && once2[name2].some((value, index) => {
6486
+ }) && once2[name].some((value, index) => {
6473
6487
  if (value === count) {
6474
- listeners[name2].splice(index, 1);
6488
+ listeners[name].splice(index, 1);
6475
6489
  return true;
6476
6490
  }
6477
6491
  });
6478
6492
  } else {
6479
- delete listeners[name2];
6480
- delete this.#once[name2];
6493
+ delete listeners[name];
6494
+ delete this.#once[name];
6481
6495
  }
6482
6496
  return this;
6483
6497
  }
@@ -34,6 +34,16 @@ class MemoryBasic {
34
34
  });
35
35
  return this;
36
36
  }
37
+ /**
38
+ * 返回位于指定索引处的项
39
+ */
40
+ at(index) {
41
+ const { list } = this;
42
+ if (index < 0) {
43
+ index += list.length;
44
+ }
45
+ return this.list.at(index);
46
+ }
37
47
  /**
38
48
  * 遍历所有存储数据(按入栈顺序)
39
49
  */
@@ -134,8 +144,8 @@ class MemoryBasic {
134
144
  if (!memorys.has(type))
135
145
  return this;
136
146
  const local = hash8strings(this.#reflex(memorys.get(type)));
137
- const Memory2 = this.constructor;
138
- const imitator = new Memory2(this.key, {
147
+ const Memory = this.constructor;
148
+ const imitator = new Memory(this.key, {
139
149
  mount: this.#mount,
140
150
  reflex: this.#reflex
141
151
  });
@@ -16,6 +16,12 @@ class MemorySimple {
16
16
  const key = this.#key;
17
17
  return typeof key === "function" ? key(data) : data[key];
18
18
  }
19
+ /**
20
+ * 返回位于指定索引处的项
21
+ */
22
+ at(index) {
23
+ return this.#memory.at(index);
24
+ }
19
25
  push(...list) {
20
26
  const memory = this.#memory;
21
27
  list.forEach((data) => {
@@ -1,8 +1,8 @@
1
- import { name } from "@package";
2
1
  import localforage from "localforage";
3
2
  import { isString } from "lodash-es";
4
3
  import { sm4 } from "sm-crypto";
5
- const PREFIX = name + "_";
4
+ const NAME = "@vope/utils";
5
+ const PREFIX = NAME + "_";
6
6
  const key = [25, 144, 1, 32, 25, 135, 6, 40, 32, 23, 18, 19, 32, 36, 9, 5];
7
7
  const iv = [182, 59, 9, 29, 86, 64, 118, 111, 112, 101, 47, 117, 116, 105, 108, 115];
8
8
  const config = {
@@ -10,7 +10,7 @@ const config = {
10
10
  mode: "cbc",
11
11
  iv
12
12
  };
13
- const HEADER = "." + sm4.encrypt(name, key, config);
13
+ const HEADER = "." + sm4.encrypt(NAME, key, config);
14
14
  const encrypt = (data) => {
15
15
  let text = "";
16
16
  for (const key2 in data) {
@@ -49,9 +49,9 @@ const MESSAGES = {
49
49
  update: "Cannot update data to expired databases",
50
50
  get: "Cannot get data from expired databases"
51
51
  };
52
- const createInstance = (name2, version = 2) => localforage.createInstance({
52
+ const createInstance = (name, version = 2) => localforage.createInstance({
53
53
  driver: localforage.INDEXEDDB,
54
- name: name2,
54
+ name,
55
55
  version
56
56
  });
57
57
  class OfflineStorage {
@@ -69,12 +69,12 @@ class OfflineStorage {
69
69
  return this.#mounted;
70
70
  }
71
71
  constructor({
72
- name: name2,
72
+ name,
73
73
  expire: newExpire,
74
74
  token: newToken,
75
75
  crypto
76
76
  }) {
77
- const forage = this.#forage = createInstance(sm4.encrypt(PREFIX + name2, key, config));
77
+ const forage = this.#forage = createInstance(sm4.encrypt(PREFIX + name, key, config));
78
78
  this.#mount = new Promise(async (resolve) => {
79
79
  const keys = await forage.keys().then((keys2) => keys2).catch(() => []);
80
80
  let size = 0;
@@ -203,18 +203,18 @@ class OfflineStorage {
203
203
  const size = PREFIX.length;
204
204
  const databases = await indexedDB.databases();
205
205
  const tasks = [];
206
- for (const { name: name2, version } of databases) {
207
- if (name2 === void 0)
206
+ for (const { name, version } of databases) {
207
+ if (name === void 0)
208
208
  continue;
209
209
  let text;
210
210
  try {
211
- text = sm4.decrypt(name2, key, config);
211
+ text = sm4.decrypt(name, key, config);
212
212
  } catch {
213
213
  continue;
214
214
  }
215
215
  if (text.slice(0, size) !== PREFIX)
216
216
  continue;
217
- const forage = createInstance(name2, version);
217
+ const forage = createInstance(name, version);
218
218
  const value = await forage.getItem(HEADER);
219
219
  if (value === null || decrypt(value).token !== token || callback && callback(text.slice(size)))
220
220
  continue;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vope/utils",
3
- "version": "1.4.26",
3
+ "version": "1.4.28",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -1,4 +1,4 @@
1
- import { Memory } from './type';
1
+ import { type Memory } from './type';
2
2
  interface Config<Reactor> {
3
3
  /**
4
4
  * 定义数据如何挂载到存储中
@@ -31,6 +31,10 @@ export declare class MemoryBasic<T, Reactor, Type extends Memory.Type> {
31
31
  constructor(key: Memory.Pitch<T, Type>, config: Config<Reactor>);
32
32
  protected getType(data: T): Type;
33
33
  push(...list: T[]): this;
34
+ /**
35
+ * 返回位于指定索引处的项
36
+ */
37
+ at(index: number): T | undefined;
34
38
  /**
35
39
  * 遍历所有存储数据(按入栈顺序)
36
40
  */
@@ -1,5 +1,5 @@
1
1
  import { MemoryBasic } from './basic';
2
- import { Memory } from './type';
2
+ import { type Memory } from './type';
3
3
  /**
4
4
  * 分类存储(基于普通的键值存储)
5
5
  */
@@ -1,5 +1,5 @@
1
1
  import { MemoryBasic } from './basic';
2
- import { Memory } from './type';
2
+ import { type Memory } from './type';
3
3
  /**
4
4
  * 分类存储(基于2的n次幂之和构建唯一键进行存储)
5
5
  */
@@ -1,11 +1,12 @@
1
1
  import { Assign } from '@vope/types';
2
2
  import { MemoryBasic } from './basic';
3
- import { Memory } from './type';
3
+ import { type Memory } from './type';
4
4
  type Transform<T, V> = {
5
5
  [P in keyof T]: T[P] extends (...args: any) => any ? (...args: Parameters<T[P]>) => ReturnType<T[P]> extends T ? V : ReturnType<T[P]> : T[P];
6
6
  };
7
7
  type Basic<T, V, Type extends Memory.Type> = Assign<Transform<Omit<MemoryBasic<T, V, Type>, 'forType'>, MemorySimple<T, Type>>, {
8
8
  get(type: Type): T | null;
9
+ at(index: number): T | undefined;
9
10
  }>;
10
11
  /**
11
12
  * 简易存储(不分类)
@@ -14,6 +15,10 @@ export declare class MemorySimple<T, Type extends Memory.Type> implements Basic<
14
15
  #private;
15
16
  get size(): number;
16
17
  constructor(key: Memory.Pitch<T, Type>);
18
+ /**
19
+ * 返回位于指定索引处的项
20
+ */
21
+ at(index: number): T | undefined;
17
22
  push(...list: T[]): this;
18
23
  /**
19
24
  * 获取指定类型存储数据