kiru 1.1.1 → 1.1.2

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.
@@ -10,7 +10,6 @@ export declare class ComputedSignal<T> extends Signal<T> {
10
10
  set value(next: T);
11
11
  subscribe(cb: (state: T, prevState?: T) => void): () => void;
12
12
  static dispose(signal: ComputedSignal<any>): void;
13
- static updateGetter<T>(signal: ComputedSignal<T>, getter: (prev?: T) => T): void;
14
13
  private static stop;
15
14
  private static run;
16
15
  private ensureNotDirty;
@@ -1 +1 @@
1
- {"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../../src/signals/computed.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGlC,qBAAa,cAAc,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IAC9C,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAClC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACxC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAA;gBACf,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM;IAuBzD,IAAI,KAAK,IAgBO,CAAC,CAbhB;IAED,QAAQ;IAKR,IAAI;IAMJ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,EAAI;IAErB,SAAS,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAO5D,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI;IAKjD,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;IAUzE,OAAO,CAAC,MAAM,CAAC,IAAI;IASnB,OAAO,CAAC,MAAM,CAAC,GAAG;IAwBlB,OAAO,CAAC,cAAc;CAgBvB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EACxB,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EACvB,WAAW,CAAC,EAAE,MAAM,GACnB,cAAc,CAAC,CAAC,CAAC,CAEnB"}
1
+ {"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../../src/signals/computed.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGlC,qBAAa,cAAc,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IAC9C,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAClC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACxC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAA;gBACf,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM;IAuBzD,IAAI,KAAK,IAgBO,CAAC,CAbhB;IAED,QAAQ;IAKR,IAAI;IAMJ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,EAAI;IAErB,SAAS,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAO5D,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI;IAKjD,OAAO,CAAC,MAAM,CAAC,IAAI;IAYnB,OAAO,CAAC,MAAM,CAAC,GAAG;IA2BlB,OAAO,CAAC,cAAc;CA6BvB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EACxB,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EACvB,WAAW,CAAC,EAAE,MAAM,GACnB,cAAc,CAAC,CAAC,CAAC,CAEnB"}
@@ -50,24 +50,21 @@ export class ComputedSignal extends Signal {
50
50
  ComputedSignal.stop(signal);
51
51
  Signal.dispose(signal);
52
52
  }
53
- static updateGetter(signal, getter) {
54
- const $computed = latest(signal);
55
- $computed.$getter = getter;
56
- $computed.$isDirty = true;
57
- ComputedSignal.run($computed);
58
- if (Object.is($computed.$value, $computed.$prevValue))
59
- return;
60
- $computed.notify();
61
- }
62
53
  static stop(computed) {
63
- const { $id, $unsubs } = latest(computed);
54
+ if (__DEV__) {
55
+ computed = latest(computed);
56
+ }
57
+ const { $id, $unsubs } = computed;
64
58
  effectQueue.delete($id);
65
59
  $unsubs.forEach(call);
66
60
  $unsubs.clear();
67
61
  computed.$isDirty = true;
68
62
  }
69
63
  static run(computed) {
70
- const $computed = latest(computed);
64
+ let $computed = computed;
65
+ if (__DEV__) {
66
+ $computed = latest(computed);
67
+ }
71
68
  const { $id: id, $getter, $unsubs: subs } = $computed;
72
69
  const value = executeWithTracking({
73
70
  id,
@@ -93,7 +90,18 @@ export class ComputedSignal extends Signal {
93
90
  $computed.$isDirty = false;
94
91
  }
95
92
  ensureNotDirty() {
96
- if (!this.$isDirty)
93
+ let $computed = this;
94
+ if (__DEV__) {
95
+ $computed = latest(this);
96
+ }
97
+ if (!$computed.$isDirty) {
98
+ const pending = effectQueue.get($computed.$id);
99
+ if (pending) {
100
+ pending();
101
+ effectQueue.delete($computed.$id);
102
+ }
103
+ }
104
+ if (!$computed.$isDirty)
97
105
  return;
98
106
  if (__DEV__) {
99
107
  /**
@@ -105,10 +113,10 @@ export class ComputedSignal extends Signal {
105
113
  * the previous signal's ID and not disposing it / deleting the
106
114
  * map entry.
107
115
  */
108
- if (this.$isDisposed)
116
+ if ($computed.$isDisposed)
109
117
  return;
110
118
  }
111
- ComputedSignal.run(this);
119
+ ComputedSignal.run($computed);
112
120
  }
113
121
  }
114
122
  export function computed(getter, displayName) {
@@ -1 +1 @@
1
- {"version":3,"file":"computed.js","sourceRoot":"","sources":["../../src/signals/computed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"computed.js","sourceRoot":"","sources":["../../src/signals/computed.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kiru",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "A batteries-included, easy-to-use rendering library with a tiny footprint",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -63,18 +63,11 @@ export class ComputedSignal<T> extends Signal<T> {
63
63
  Signal.dispose(signal)
64
64
  }
65
65
 
66
- static updateGetter<T>(signal: ComputedSignal<T>, getter: (prev?: T) => T) {
67
- const $computed = latest(signal)
68
- $computed.$getter = getter
69
- $computed.$isDirty = true
70
-
71
- ComputedSignal.run($computed)
72
- if (Object.is($computed.$value, $computed.$prevValue)) return
73
- $computed.notify()
74
- }
75
-
76
66
  private static stop<T>(computed: ComputedSignal<T>) {
77
- const { $id, $unsubs } = latest(computed)
67
+ if (__DEV__) {
68
+ computed = latest(computed)
69
+ }
70
+ const { $id, $unsubs } = computed
78
71
 
79
72
  effectQueue.delete($id)
80
73
  $unsubs.forEach(call)
@@ -83,31 +76,46 @@ export class ComputedSignal<T> extends Signal<T> {
83
76
  }
84
77
 
85
78
  private static run<T>(computed: ComputedSignal<T>) {
86
- const $computed = latest(computed)
87
- const { $id: id, $getter, $unsubs: subs } = $computed
79
+ if (__DEV__) {
80
+ computed = latest(computed)
81
+ }
82
+ const { $id: id, $getter, $unsubs: subs } = computed
88
83
 
89
84
  const value = executeWithTracking({
90
85
  id,
91
86
  subs,
92
- fn: () => $getter($computed.$value),
87
+ fn: () => $getter(computed.$value),
93
88
  onDepChanged: () => {
94
- $computed.$isDirty = true
89
+ computed.$isDirty = true
95
90
  if (__DEV__) {
96
91
  if (!signalSubsMap?.get(id)?.size) return
97
92
  } else {
98
93
  if (!computed.$subs!.size) return
99
94
  }
100
- ComputedSignal.run($computed)
101
- if (Object.is($computed.$value, $computed.$prevValue)) return
102
- $computed.notify()
95
+ ComputedSignal.run(computed)
96
+ if (Object.is(computed.$value, computed.$prevValue)) return
97
+ computed.notify()
103
98
  },
104
99
  })
105
- $computed.sneak(value)
106
- $computed.$isDirty = false
100
+ computed.sneak(value)
101
+ computed.$isDirty = false
107
102
  }
108
103
 
109
104
  private ensureNotDirty() {
110
- if (!this.$isDirty) return
105
+ let computed = this
106
+ if (__DEV__) {
107
+ computed = latest(this)
108
+ }
109
+
110
+ if (!computed.$isDirty) {
111
+ const pending = effectQueue.get(computed.$id)
112
+ if (pending) {
113
+ pending()
114
+ effectQueue.delete(computed.$id)
115
+ }
116
+ }
117
+
118
+ if (!computed.$isDirty) return
111
119
  if (__DEV__) {
112
120
  /**
113
121
  * This is a safeguard for dev-mode only, where a 'read' on an
@@ -118,9 +126,9 @@ export class ComputedSignal<T> extends Signal<T> {
118
126
  * the previous signal's ID and not disposing it / deleting the
119
127
  * map entry.
120
128
  */
121
- if (this.$isDisposed) return
129
+ if (computed.$isDisposed) return
122
130
  }
123
- ComputedSignal.run(this)
131
+ ComputedSignal.run(computed)
124
132
  }
125
133
  }
126
134