@vope/utils 1.2.1 → 1.3.0

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/union.js CHANGED
@@ -2,24 +2,27 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  /**
4
4
  * 数据联合(用于需要对加入的数据进行智能提示)
5
- * @description 如果设置了formatter,则可以通过设置泛型R来变化Union.value的类型
6
5
  */
7
6
  class Union {
8
7
  key;
9
8
  formatter;
10
- #map = {};
11
- get value() {
12
- return this.#map;
9
+ #data = {};
10
+ #options = {};
11
+ get data() {
12
+ return this.#data;
13
+ }
14
+ get options() {
15
+ return this.#options;
13
16
  }
14
17
  constructor(key, formatter) {
15
18
  this.key = key;
16
19
  this.formatter = formatter;
17
20
  }
18
21
  add(data) {
19
- const { formatter } = this;
20
- this.#map[data[this.key]] = formatter
21
- ? formatter(data)
22
- : data;
22
+ const key = data[this.key];
23
+ const result = this.formatter(data);
24
+ this.#data[key] = result.data;
25
+ this.#options[key] = result.option;
23
26
  return this;
24
27
  }
25
28
  }
package/lib/union.js CHANGED
@@ -1,23 +1,26 @@
1
1
  /**
2
2
  * 数据联合(用于需要对加入的数据进行智能提示)
3
- * @description 如果设置了formatter,则可以通过设置泛型R来变化Union.value的类型
4
3
  */
5
4
  export default class Union {
6
5
  key;
7
6
  formatter;
8
- #map = {};
9
- get value() {
10
- return this.#map;
7
+ #data = {};
8
+ #options = {};
9
+ get data() {
10
+ return this.#data;
11
+ }
12
+ get options() {
13
+ return this.#options;
11
14
  }
12
15
  constructor(key, formatter) {
13
16
  this.key = key;
14
17
  this.formatter = formatter;
15
18
  }
16
19
  add(data) {
17
- const { formatter } = this;
18
- this.#map[data[this.key]] = formatter
19
- ? formatter(data)
20
- : data;
20
+ const key = data[this.key];
21
+ const result = this.formatter(data);
22
+ this.#data[key] = result.data;
23
+ this.#options[key] = result.option;
21
24
  return this;
22
25
  }
23
26
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vope/utils",
3
- "version": "1.2.1",
3
+ "version": "1.3.0",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "publishConfig": {
package/types/union.d.ts CHANGED
@@ -1,21 +1,20 @@
1
1
  import { Revise } from '@vope/types';
2
- type IMap<K extends string, VV extends string, T extends {
3
- [key in K]: string;
4
- }> = {
5
- [key in VV]?: T;
6
- };
2
+ interface Result<Data, Option> {
3
+ data: Data;
4
+ option: Option;
5
+ }
7
6
  /**
8
7
  * 数据联合(用于需要对加入的数据进行智能提示)
9
- * @description 如果设置了formatter,则可以通过设置泛型R来变化Union.value的类型
10
8
  */
11
- export default class Union<K extends string, VV extends string, T extends {
12
- [key in K]: string;
13
- }, R extends T = T, L extends VV | never = never> {
9
+ export default class Union<Primary extends string, Member extends string, Origin extends {
10
+ [key in Primary]: string;
11
+ }, Data extends unknown, Option extends unknown, Status extends Member | never = never> {
14
12
  #private;
15
13
  private key;
16
- private formatter?;
17
- get value(): Required<IMap<K, L, R>>;
18
- constructor(key: K, formatter?: ((data: T) => R) | undefined);
19
- add<V extends Exclude<VV, L>>(data: Revise<T, K, V>): Union<K, VV, T, R, L | V>;
14
+ private formatter;
15
+ get data(): Required<Record<Status, Data>>;
16
+ get options(): Required<Record<Status, Option>>;
17
+ constructor(key: Primary, formatter: (data: Origin) => Result<Data, Option>);
18
+ add<V extends Exclude<Member, Status>>(data: Revise<Origin, Primary, V>): Union<Primary, Member, Origin, Data, Option, Status | V> & Omit<this, keyof Union<Primary, Member, Origin, Data, Option, Status | V>>;
20
19
  }
21
20
  export {};