@esportsplus/reactivity 0.1.14 → 0.1.15

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/build/signal.js CHANGED
@@ -155,12 +155,12 @@ function removeSourceObservers(node, start) {
155
155
  return;
156
156
  }
157
157
  for (let i = start, n = node.sources.length; i < n; i++) {
158
- let source = node.sources[i];
159
- if (source.observers === null) {
158
+ let observers = node.sources[i].observers;
159
+ if (observers === null) {
160
160
  continue;
161
161
  }
162
- source.observers[source.observers.indexOf(node)] = source.observers[source.observers.length - 1];
163
- source.observers.pop();
162
+ observers[observers.indexOf(node)] = observers[observers.length - 1];
163
+ observers.pop();
164
164
  }
165
165
  }
166
166
  function sync(node) {
@@ -200,7 +200,7 @@ function update(node) {
200
200
  }
201
201
  for (let i = index, n = node.sources.length; i < n; i++) {
202
202
  let source = node.sources[i];
203
- if (!source.observers) {
203
+ if (source.observers === null) {
204
204
  source.observers = [node];
205
205
  }
206
206
  else {
package/build/types.d.ts CHANGED
@@ -1,11 +1,12 @@
1
1
  import { Function, NeverAsync, Prettify } from '@esportsplus/typescript';
2
2
  import { CHECK, CLEAN, COMPUTED, DIRTY, DISPOSED, EFFECT, ROOT, SIGNAL } from './constants';
3
3
  import { Reactive } from './signal';
4
- type Base<T> = Omit<Reactive<T>, 'changed' | 'fn' | 'scheduler' | 'task' | 'tracking'>;
4
+ type Base<T> = Omit<Reactive<T>, 'changed' | 'fn' | 'get' | 'scheduler' | 'set' | 'task' | 'tracking'>;
5
5
  type Changed = (a: unknown, b: unknown) => boolean;
6
6
  type Computed<T> = {
7
7
  changed: Changed;
8
8
  fn: NeverAsync<() => T>;
9
+ get(): T;
9
10
  } & Base<T>;
10
11
  type Effect = {
11
12
  fn: NeverAsync<(node: Effect) => void>;
@@ -28,10 +29,12 @@ type Root = {
28
29
  scheduler: Scheduler;
29
30
  tracking: boolean;
30
31
  value: void;
31
- } & Omit<Reactive<void>, 'changed' | 'fn' | 'root' | 'task'>;
32
+ } & Omit<Reactive<void>, 'root'>;
32
33
  type Scheduler = (fn: Function) => unknown;
33
34
  type Signal<T> = {
34
35
  changed: Changed;
36
+ get(): T;
37
+ set(value: T): T;
35
38
  } & Base<T>;
36
39
  type State = typeof CHECK | typeof CLEAN | typeof DIRTY | typeof DISPOSED;
37
40
  type Type = typeof COMPUTED | typeof EFFECT | typeof ROOT | typeof SIGNAL;
package/package.json CHANGED
@@ -16,5 +16,5 @@
16
16
  "prepublishOnly": "npm run build"
17
17
  },
18
18
  "types": "build/index.d.ts",
19
- "version": "0.1.14"
19
+ "version": "0.1.15"
20
20
  }
package/src/signal.ts CHANGED
@@ -201,14 +201,14 @@ function removeSourceObservers<T>(node: Reactive<T>, start: number) {
201
201
  }
202
202
 
203
203
  for (let i = start, n = node.sources.length; i < n; i++) {
204
- let source = node.sources[i];
204
+ let observers = node.sources[i].observers;
205
205
 
206
- if (source.observers === null) {
206
+ if (observers === null) {
207
207
  continue;
208
208
  }
209
209
 
210
- source.observers[source.observers.indexOf(node)] = source.observers[source.observers.length - 1];
211
- source.observers.pop();
210
+ observers[observers.indexOf(node)] = observers[observers.length - 1];
211
+ observers.pop();
212
212
  }
213
213
  }
214
214
 
@@ -266,7 +266,7 @@ function update<T>(node: Reactive<T>) {
266
266
  for (let i = index, n = node.sources.length; i < n; i++) {
267
267
  let source = node.sources[i];
268
268
 
269
- if (!source.observers) {
269
+ if (source.observers === null) {
270
270
  source.observers = [node];
271
271
  }
272
272
  else {
@@ -294,12 +294,12 @@ function update<T>(node: Reactive<T>) {
294
294
 
295
295
 
296
296
  const computed = <T>(fn: Computed<T>['fn'], options?: Options) => {
297
- let instance = new Reactive(DIRTY, COMPUTED, undefined as T) as any as Computed<T>;
297
+ let instance = new Reactive(DIRTY, COMPUTED, undefined as T);
298
298
 
299
299
  instance.changed = options?.changed || changed;
300
300
  instance.fn = fn;
301
301
 
302
- return instance;
302
+ return instance as Computed<T>;
303
303
  };
304
304
 
305
305
  const dispose = <T extends { dispose: VoidFunction }>(dispose?: T[] | T | null) => {
@@ -318,14 +318,14 @@ const dispose = <T extends { dispose: VoidFunction }>(dispose?: T[] | T | null)
318
318
  };
319
319
 
320
320
  const effect = (fn: Effect['fn']) => {
321
- let instance = new Reactive(DIRTY, EFFECT, null) as any as Effect;
321
+ let instance = new Reactive(DIRTY, EFFECT, null);
322
322
 
323
323
  instance.fn = fn;
324
324
  instance.task = () => instance.get();
325
325
 
326
- update(instance as any as Reactive<void>);
326
+ update(instance);
327
327
 
328
- return instance;
328
+ return instance as Effect;
329
329
  };
330
330
 
331
331
  const root = <T>(fn: NeverAsync<(root: Root) => T>, scheduler: Scheduler | null = null) => {
@@ -355,11 +355,11 @@ const root = <T>(fn: NeverAsync<(root: Root) => T>, scheduler: Scheduler | null
355
355
  };
356
356
 
357
357
  const signal = <T>(value: T, options?: Options) => {
358
- let instance = new Reactive(CLEAN, SIGNAL, value) as any as Signal<T>;
358
+ let instance = new Reactive(CLEAN, SIGNAL, value);
359
359
 
360
360
  instance.changed = options?.changed || changed;
361
361
 
362
- return instance;
362
+ return instance as Signal<T>;
363
363
  };
364
364
 
365
365
 
package/src/types.ts CHANGED
@@ -3,13 +3,14 @@ import { CHECK, CLEAN, COMPUTED, DIRTY, DISPOSED, EFFECT, ROOT, SIGNAL } from '.
3
3
  import { Reactive } from './signal';
4
4
 
5
5
 
6
- type Base<T> = Omit<Reactive<T>, 'changed' | 'fn' | 'scheduler' | 'task' | 'tracking'>;
6
+ type Base<T> = Omit<Reactive<T>, 'changed' | 'fn' | 'get' | 'scheduler' | 'set' | 'task' | 'tracking'>;
7
7
 
8
8
  type Changed = (a: unknown, b: unknown) => boolean;
9
9
 
10
10
  type Computed<T> = {
11
11
  changed: Changed;
12
12
  fn: NeverAsync<() => T>;
13
+ get(): T;
13
14
  } & Base<T>;
14
15
 
15
16
  type Effect = {
@@ -36,12 +37,14 @@ type Root = {
36
37
  scheduler: Scheduler;
37
38
  tracking: boolean;
38
39
  value: void;
39
- } & Omit<Reactive<void>, 'changed' | 'fn' | 'root' | 'task'>;
40
+ } & Omit<Reactive<void>, 'root'>;
40
41
 
41
42
  type Scheduler = (fn: Function) => unknown;
42
43
 
43
44
  type Signal<T> = {
44
45
  changed: Changed;
46
+ get(): T;
47
+ set(value: T): T;
45
48
  } & Base<T>;
46
49
 
47
50
  type State = typeof CHECK | typeof CLEAN | typeof DIRTY | typeof DISPOSED;