@esportsplus/reactivity 0.1.27 → 0.1.29

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.
@@ -24,7 +24,6 @@ type Events<T> = {
24
24
  items: T[];
25
25
  };
26
26
  };
27
- type Node<T extends Object> = ReactiveObject<T>;
28
27
  declare class ReactiveArray<T> extends Array<T> {
29
28
  private signal;
30
29
  constructor(data: T[]);
@@ -33,6 +32,7 @@ declare class ReactiveArray<T> extends Array<T> {
33
32
  dispatch<E extends keyof Events<T>>(event: E, data?: Events<T>[E]): void;
34
33
  dispose(): void;
35
34
  fill(value: T, start?: number, end?: number): this;
35
+ map<U>(fn: (value: T, i: number, values: this) => U): U[];
36
36
  on<E extends keyof Events<T>>(event: E, listener: Listener<Events<T>[E]>): void;
37
37
  once<E extends keyof Events<T>>(event: E, listener: Listener<Events<T>[E]>): void;
38
38
  pop(): T | undefined;
@@ -44,16 +44,16 @@ declare class ReactiveArray<T> extends Array<T> {
44
44
  track(): void;
45
45
  unshift(...items: T[]): number;
46
46
  }
47
- declare class ReactiveObjectArray<T extends Object> extends ReactiveArray<Node<T>> {
47
+ declare class ReactiveObjectArray<T extends Object> extends ReactiveArray<ReactiveObject<T>> {
48
48
  private options;
49
49
  constructor(data: T[], options?: Options);
50
50
  fill(): never;
51
51
  reverse(): never;
52
- pop(): Node<T> | undefined;
52
+ pop(): ReactiveObject<T> | undefined;
53
53
  push(...values: T[]): number;
54
- shift(): Node<T> | undefined;
54
+ shift(): ReactiveObject<T> | undefined;
55
55
  sort(): never;
56
- splice(start: number, deleteCount?: number, ...values: T[]): Node<T> | Node<T>[] | null | undefined;
56
+ splice(start: number, deleteCount?: number, ...values: T[]): ReactiveObject<T> | ReactiveObject<T>[] | null | undefined;
57
57
  unshift(...values: T[]): number;
58
58
  }
59
59
  export { ReactiveArray, ReactiveObjectArray };
@@ -13,7 +13,7 @@ function unsupported(method) {
13
13
  class ReactiveArray extends Array {
14
14
  signal;
15
15
  constructor(data) {
16
- super(...data);
16
+ super(data);
17
17
  this.signal = signal(false);
18
18
  }
19
19
  set length(n) {
@@ -37,6 +37,13 @@ class ReactiveArray extends Array {
37
37
  this.trigger();
38
38
  return this;
39
39
  }
40
+ map(fn) {
41
+ let values = [];
42
+ for (let i = 0, n = this.length; i < n; i++) {
43
+ values.push(fn(this[i], i, this));
44
+ }
45
+ return values;
46
+ }
40
47
  on(event, listener) {
41
48
  this.signal.on(event, listener);
42
49
  }
@@ -8,11 +8,11 @@ type Infer<T> = T extends (...args: unknown[]) => unknown ? ReturnType<T> : T ex
8
8
  [K in keyof T]: T[K];
9
9
  } : T;
10
10
  type Never<K, V> = K extends keyof ReactiveObject<Object> ? never : V;
11
- type Node<T> = T extends (...args: unknown[]) => unknown ? Computed<T> : T extends unknown[] ? T extends Object[] ? ReactiveObjectArray<T[0]> : ReactiveArray<T> : Signal<T>;
12
- type Nodes<T extends Object> = {
13
- [K in keyof T]: Node<T[K]>;
11
+ type Nodes<T> = T extends (...args: unknown[]) => unknown ? Computed<T> : T extends unknown[] ? T extends Object[] ? ReactiveObjectArray<T[0]> : ReactiveArray<T> : Signal<T>;
12
+ type Signals<T extends Object> = {
13
+ [K in keyof T]: Nodes<T[K]>;
14
14
  };
15
- declare const _default: <T extends Object>(data: Guard<T>, options?: Options) => Prettify<{ [K in keyof T]: Infer<T[K]>; } & Omit<ReactiveObject<T>, "nodes"> & {
16
- nodes: Nodes<T>;
15
+ declare const _default: <T extends Object>(data: Guard<T>, options?: Options) => Prettify<{ [K in keyof T]: Infer<T[K]>; } & Omit<ReactiveObject<T>, "signals"> & {
16
+ signals: Signals<T>;
17
17
  }>;
18
18
  export default _default;
@@ -2,7 +2,7 @@ import { Computed, Object, Options, Signal } from '../types';
2
2
  import { ReactiveArray, ReactiveObjectArray } from './array';
3
3
  type Node = Computed<any> | ReactiveArray<any> | ReactiveObjectArray<Object> | Signal<any>;
4
4
  declare class ReactiveObject<T extends Object> {
5
- nodes: Record<PropertyKey, Node>;
5
+ signals: Record<PropertyKey, Node>;
6
6
  constructor(data: T, options?: Options);
7
7
  dispose(): void;
8
8
  }
@@ -2,54 +2,54 @@ import { computed, signal } from '../signal';
2
2
  import { defineProperty, isArray } from '../utilities';
3
3
  import { ReactiveArray, ReactiveObjectArray } from './array';
4
4
  class ReactiveObject {
5
- nodes = {};
5
+ signals = {};
6
6
  constructor(data, options = {}) {
7
- let nodes = this.nodes;
7
+ let signals = this.signals;
8
8
  for (let key in data) {
9
9
  let input = data[key];
10
10
  if (typeof input === 'function') {
11
- let node = nodes[key] = computed(input, options);
11
+ let s = signals[key] = computed(input, options);
12
12
  defineProperty(this, key, {
13
13
  enumerable: true,
14
14
  get() {
15
- return node.get();
15
+ return s.get();
16
16
  }
17
17
  });
18
18
  }
19
19
  else if (isArray(input)) {
20
- let node, test = input[0];
20
+ let s, test = input[0];
21
21
  if (typeof test === 'object' && test !== null && test?.constructor?.name === 'Object') {
22
- node = nodes[key] = new ReactiveObjectArray(input, options);
22
+ s = signals[key] = new ReactiveObjectArray(input, options);
23
23
  }
24
24
  else {
25
- node = nodes[key] = new ReactiveArray(input);
25
+ s = signals[key] = new ReactiveArray(input);
26
26
  }
27
27
  defineProperty(this, key, {
28
28
  enumerable: true,
29
29
  get() {
30
- node.track();
31
- return node;
30
+ s.track();
31
+ return s;
32
32
  }
33
33
  });
34
34
  }
35
35
  else {
36
- let node = nodes[key] = signal(input, options);
36
+ let s = signals[key] = signal(input, options);
37
37
  defineProperty(this, key, {
38
38
  enumerable: true,
39
39
  get() {
40
- return node.get();
40
+ return s.get();
41
41
  },
42
42
  set(value) {
43
- node.set(value);
43
+ s.set(value);
44
44
  }
45
45
  });
46
46
  }
47
47
  }
48
48
  }
49
49
  dispose() {
50
- let nodes = this.nodes;
51
- for (let key in nodes) {
52
- nodes[key].dispose();
50
+ let signals = this.signals;
51
+ for (let key in signals) {
52
+ signals[key].dispose();
53
53
  }
54
54
  }
55
55
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "author": "ICJR",
3
3
  "dependencies": {
4
- "@esportsplus/custom-function": "^0.0.6"
4
+ "@esportsplus/custom-function": "^0.0.7"
5
5
  },
6
6
  "devDependencies": {
7
7
  "@esportsplus/typescript": "^0.4.9"
@@ -16,5 +16,5 @@
16
16
  "prepublishOnly": "npm run build"
17
17
  },
18
18
  "types": "build/index.d.ts",
19
- "version": "0.1.27"
19
+ "version": "0.1.29"
20
20
  }
@@ -14,8 +14,6 @@ type Events<T> = {
14
14
  unshift: { items: T[] };
15
15
  };
16
16
 
17
- type Node<T extends Object> = ReactiveObject<T>;
18
-
19
17
 
20
18
  function factory<T extends Object>(data: T[], options: Options = {}) {
21
19
  let signals = [];
@@ -37,7 +35,8 @@ class ReactiveArray<T> extends Array<T> {
37
35
 
38
36
 
39
37
  constructor(data: T[]) {
40
- super(...data);
38
+ // @ts-ignore
39
+ super(data);
41
40
  this.signal = signal(false);
42
41
  }
43
42
 
@@ -73,6 +72,16 @@ class ReactiveArray<T> extends Array<T> {
73
72
  return this;
74
73
  }
75
74
 
75
+ map<U>(fn: (value: T, i: number, values: this) => U) {
76
+ let values: U[] = [];
77
+
78
+ for (let i = 0, n = this.length; i < n; i++) {
79
+ values.push( fn(this[i], i, this) );
80
+ }
81
+
82
+ return values;
83
+ }
84
+
76
85
  on<E extends keyof Events<T>>(event: E, listener: Listener<Events<T>[E]>) {
77
86
  this.signal.on(event, listener);
78
87
  }
@@ -162,8 +171,8 @@ class ReactiveArray<T> extends Array<T> {
162
171
 
163
172
  // REMINDER:
164
173
  // - @ts-ignore flags are supressing a type mismatch error
165
- // - Input values are being transformed by this class into nodes
166
- class ReactiveObjectArray<T extends Object> extends ReactiveArray<Node<T>> {
174
+ // - Input values are being transformed by this class into signals
175
+ class ReactiveObjectArray<T extends Object> extends ReactiveArray<ReactiveObject<T>> {
167
176
  private options: Options;
168
177
 
169
178
 
@@ -182,7 +191,7 @@ class ReactiveObjectArray<T extends Object> extends ReactiveArray<Node<T>> {
182
191
  }
183
192
 
184
193
  pop() {
185
- return dispose(super.pop()) as Node<T> | undefined;
194
+ return dispose(super.pop()) as ReactiveObject<T>| undefined;
186
195
  }
187
196
 
188
197
  // @ts-ignore
@@ -191,7 +200,7 @@ class ReactiveObjectArray<T extends Object> extends ReactiveArray<Node<T>> {
191
200
  }
192
201
 
193
202
  shift() {
194
- return dispose(super.shift()) as Node<T> | undefined;
203
+ return dispose(super.shift()) as ReactiveObject<T> | undefined;
195
204
  }
196
205
 
197
206
  sort() {
@@ -21,18 +21,20 @@ type Infer<T> =
21
21
 
22
22
  type Never<K,V> = K extends keyof ReactiveObject<Object> ? never : V;
23
23
 
24
- type Node<T> =
24
+ type Nodes<T> =
25
25
  T extends (...args: unknown[]) => unknown
26
26
  ? Computed<T>
27
27
  : T extends unknown[]
28
28
  ? T extends Object[] ? ReactiveObjectArray<T[0]> : ReactiveArray<T>
29
29
  : Signal<T>;
30
30
 
31
- type Nodes<T extends Object> = { [K in keyof T]: Node<T[K]> };
31
+ type Signals<T extends Object> = {
32
+ [K in keyof T]: Nodes<T[K]>
33
+ };
32
34
 
33
35
 
34
36
  export default <T extends Object>(data: Guard<T>, options?: Options) => {
35
37
  return new ReactiveObject(data, options) as any as Prettify<
36
- { [K in keyof T]: Infer<T[K]> } & Omit<ReactiveObject<T>, 'nodes'> & { nodes: Nodes<T> }
38
+ { [K in keyof T]: Infer<T[K]> } & Omit<ReactiveObject<T>, 'signals'> & { signals: Signals<T> }
37
39
  >;
38
40
  };
@@ -8,55 +8,55 @@ type Node = Computed<any> | ReactiveArray<any> | ReactiveObjectArray<Object> | S
8
8
 
9
9
 
10
10
  class ReactiveObject<T extends Object> {
11
- nodes: Record<PropertyKey, Node> = {};
11
+ signals: Record<PropertyKey, Node> = {};
12
12
 
13
13
 
14
14
  constructor(data: T, options: Options = {}) {
15
- let nodes = this.nodes;
15
+ let signals = this.signals;
16
16
 
17
17
  for (let key in data) {
18
18
  let input = data[key];
19
19
 
20
20
  if (typeof input === 'function') {
21
- let node = nodes[key] = computed(input as Computed<T>['fn'], options);
21
+ let s = signals[key] = computed(input as Computed<T>['fn'], options);
22
22
 
23
23
  defineProperty(this, key, {
24
24
  enumerable: true,
25
25
  get() {
26
- return node.get();
26
+ return s.get();
27
27
  }
28
28
  });
29
29
  }
30
30
  else if (isArray(input)) {
31
- let node: ReactiveArray<unknown> | ReactiveObjectArray<Object>,
31
+ let s: ReactiveArray<unknown> | ReactiveObjectArray<Object>,
32
32
  test = input[0];
33
33
 
34
34
  if (typeof test === 'object' && test !== null && test?.constructor?.name === 'Object') {
35
- node = nodes[key] = new ReactiveObjectArray(input, options);
35
+ s = signals[key] = new ReactiveObjectArray(input, options);
36
36
  }
37
37
  else {
38
- node = nodes[key] = new ReactiveArray(input);
38
+ s = signals[key] = new ReactiveArray(input);
39
39
  }
40
40
 
41
41
  defineProperty(this, key, {
42
42
  enumerable: true,
43
43
  get() {
44
- node.track();
44
+ s.track();
45
45
 
46
- return node;
46
+ return s;
47
47
  }
48
48
  });
49
49
  }
50
50
  else {
51
- let node = nodes[key] = signal(input, options);
51
+ let s = signals[key] = signal(input, options);
52
52
 
53
53
  defineProperty(this, key, {
54
54
  enumerable: true,
55
55
  get() {
56
- return node.get();
56
+ return s.get();
57
57
  },
58
58
  set(value) {
59
- node.set(value);
59
+ s.set(value);
60
60
  }
61
61
  });
62
62
  }
@@ -65,10 +65,10 @@ class ReactiveObject<T extends Object> {
65
65
 
66
66
 
67
67
  dispose() {
68
- let nodes = this.nodes;
68
+ let signals = this.signals;
69
69
 
70
- for (let key in nodes) {
71
- nodes[key].dispose();
70
+ for (let key in signals) {
71
+ signals[key].dispose();
72
72
  }
73
73
  }
74
74
  }