@e280/strata 0.0.0-8 → 0.0.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/README.md CHANGED
@@ -9,6 +9,7 @@
9
9
  📦 `npm install @e280/strata`
10
10
  🧙‍♂️ probably my tenth state management library, lol
11
11
  💁 it's all about rerendering ui when data changes
12
+ 🧑‍💻 a project by https://e280.org/
12
13
 
13
14
  🚦 **signals** — ephemeral view-level state
14
15
  🌳 **tree** — persistent app-level state
@@ -22,12 +23,14 @@
22
23
 
23
24
  <br/>
24
25
 
25
- ## 🚦 signals — *ephemeral view-level state*
26
+ ## 🚦 strata signals
27
+ > *ephemeral view-level state*
28
+
26
29
  ```ts
27
30
  import {signal, effect, computed} from "@e280/strata"
28
31
  ```
29
32
 
30
- ### each signal holds a value
33
+ ### 🚦 each signal holds a value
31
34
  - **create a signal**
32
35
  ```ts
33
36
  const count = signal(0)
@@ -45,19 +48,19 @@ import {signal, effect, computed} from "@e280/strata"
45
48
  await count(2)
46
49
  ```
47
50
 
48
- ### pick your poison
49
- - **signals hipster fn syntax**
51
+ ### 🚦 pick your poison
52
+ - **signal hipster fn syntax**
50
53
  ```ts
51
54
  count() // get
52
55
  await count(2) // set
53
56
  ```
54
57
  > to achieve this hipster syntax i had to make the implementation so damn cursed, lol 💀
55
- - **signals get/set syntax**
58
+ - **signal get/set syntax**
56
59
  ```ts
57
60
  count.get() // get
58
61
  await count.set(2) // set
59
62
  ```
60
- - **signals .value accessor syntax**
63
+ - **signal .value accessor syntax**
61
64
  ```ts
62
65
  count.value // get
63
66
  count.value = 2 // set
@@ -68,7 +71,7 @@ import {signal, effect, computed} from "@e280/strata"
68
71
  count.value += 1
69
72
  ```
70
73
 
71
- ### effects
74
+ ### 🚦 effects
72
75
  - **effects run when the relevant signals change**
73
76
  ```ts
74
77
  effect(() => console.log(count()))
@@ -80,7 +83,7 @@ import {signal, effect, computed} from "@e280/strata"
80
83
  // when count is changed, the effect fn is run
81
84
  ```
82
85
 
83
- ### `signal.derive` and `signal.lazy` are computed signals
86
+ ### 🚦 `signal.derive` and `signal.lazy` are computed signals
84
87
  - **signal.derive**
85
88
  is for combining signals
86
89
  ```ts
@@ -100,21 +103,25 @@ import {signal, effect, computed} from "@e280/strata"
100
103
  is for making special optimizations.
101
104
  it's like derive, except it cannot trigger effects,
102
105
  because it's so lazy it only computes the value on read, and only when necessary.
103
- > ⚠️ *i repeat: lazy signals cannot trigger effects!*
106
+ > *i repeat: lazy signals cannot trigger effects!*
104
107
 
105
108
  <br/>
106
109
 
107
- ## 🌳 tree — *persistent app-level state*
110
+ ## 🌳 strata trees
111
+ > *persistent app-level state*
112
+
113
+ ```ts
114
+ import {Trunk} from "@e280/strata"
115
+ ```
116
+
108
117
  - single-source-of-truth state tree
109
118
  - immutable except for `mutate(fn)` calls
110
119
  - localStorage persistence, cross-tab sync, undo/redo history
111
120
  - no spooky-dookie proxy magic — just god's honest javascript
112
121
 
113
- #### `Trunk` is your app's state tree root
122
+ #### 🌳 `Trunk` is your app's state tree root
114
123
  - better stick to json-friendly serializable data
115
124
  ```ts
116
- import {Trunk} from "@e280/strata"
117
-
118
125
  const trunk = new Trunk({
119
126
  count: 0,
120
127
  snacks: {
@@ -127,7 +134,7 @@ import {signal, effect, computed} from "@e280/strata"
127
134
  trunk.state.snacks.peanuts // 8
128
135
  ```
129
136
 
130
- #### formal mutations to change state
137
+ #### 🌳 formal mutations to change state
131
138
  - ⛔ informal mutations are denied
132
139
  ```ts
133
140
  trunk.state.count++ // error is thrown
@@ -137,7 +144,7 @@ import {signal, effect, computed} from "@e280/strata"
137
144
  await trunk.mutate(s => s.count++)
138
145
  ```
139
146
 
140
- #### `Branch` is a view into a subtree
147
+ #### 🌳 `Branch` is a view into a subtree
141
148
  - it's a lens, make lots of them, pass 'em around your app
142
149
  ```ts
143
150
  const snacks = trunk.branch(s => s.snacks)
@@ -152,7 +159,7 @@ import {signal, effect, computed} from "@e280/strata"
152
159
  ```
153
160
  - you can branch a branch
154
161
 
155
- #### `on` to watch for mutations
162
+ #### 🌳 `on` to watch for mutations
156
163
  - on the trunk, we can listen deeply for mutations within the whole tree
157
164
  ```ts
158
165
  trunk.on(s => console.log(s.count))
@@ -167,9 +174,10 @@ import {signal, effect, computed} from "@e280/strata"
167
174
  stop() // stop listening
168
175
  ```
169
176
 
170
- ### only discerning high-class aristocrats are permitted beyond this point
177
+ ### 🌳 fancy advanced usage
178
+ > *only discerning high-class aristocrats are permitted beyond this point*
171
179
 
172
- #### `Trunk.setup` for localStorage persistence etc
180
+ #### 🌳 `Trunk.setup` for localStorage persistence etc
173
181
  - it automatically handles persistence to localStorage and cross-tab synchronization
174
182
  - simple setup
175
183
  ```ts
@@ -196,7 +204,7 @@ import {signal, effect, computed} from "@e280/strata"
196
204
  })
197
205
  ```
198
206
 
199
- #### `Chronobranch` for undo/redo history
207
+ #### 🌳 `Chronobranch` for undo/redo history
200
208
  - first, put a `Chronicle` into your state tree
201
209
  ```ts
202
210
  const trunk = new Trunk({
@@ -235,15 +243,77 @@ import {signal, effect, computed} from "@e280/strata"
235
243
  <br/>
236
244
 
237
245
  ## 🪄 tracker — integrations
238
- - ```ts
239
- import {tracker} from "@e280/strata/tracker"
240
- ```
241
- - all reactivity is orchestrated by the `tracker`
242
- - if you are integrating a new state object, or a new view layer that needs to react to state changes, just read [tracker.ts](./s/tracker/tracker.ts)
246
+ > *reactivity integration hub*
247
+
248
+ ```ts
249
+ import {tracker} from "@e280/strata/tracker"
250
+ ```
251
+
252
+ the *items* that the tracker tracks can be any object, or symbol.. the tracker cares about the identity of the item, not the value (tracker holds them in a WeakMap to avoid creating a memory leak)..
253
+
254
+ ### 🪄 integrate your ui's reactivity
255
+ - we need to imagine you have some prerequisites
256
+ - `myRenderFn` -- your fn that might access some state stuff
257
+ - `myRerenderFn` -- your fn that is called when some state stuff changes
258
+ - it's OK if these are the same fn, but they don't have to be
259
+ - `tracker.observe` to check what is touched by a fn
260
+ ```ts
261
+ // 🪄 run myRenderFn and collect seen items
262
+ const {seen, result} = tracker.observe(myRenderFn)
263
+
264
+ // a set of items that were accessed during myRenderFn
265
+ seen
266
+
267
+ // the value returned by myRenderFn
268
+ result
269
+ ```
270
+ - it's a good idea to debounce your rerender fn
271
+ ```ts
272
+ import {debounce} from "@e280/stz"
273
+ const myDebouncedRerenderFn = debounce(0, myRerenderFn)
274
+ ```
275
+ - `tracker.subscribe` to respond to changes
276
+ ```ts
277
+ const stoppers: (() => void)[] = []
278
+
279
+ // loop over every seen item
280
+ for (const item of seen) {
281
+
282
+ // 🪄 react to changes
283
+ const stop = tracker.subscribe(item, myDebouncedRerenderFn)
284
+
285
+ stoppers.push(stop)
286
+ }
287
+
288
+ const stopReactivity = () => stoppers.forEach(stop => stop())
289
+ ```
290
+
291
+ ### 🪄 integrate your own novel state concepts
292
+ - as an example, we'll invent the simplest possible signal
293
+ ```ts
294
+ export class SimpleSignal<Value> {
295
+ constructor(private value: Value) {}
296
+
297
+ get() {
298
+
299
+ // 🪄 tell the tracker this signal was accessed
300
+ tracker.notifyRead(this)
301
+
302
+ return this.value
303
+ }
304
+
305
+ async set(value: Value) {
306
+ this.value = value
307
+
308
+ // 🪄 tell the tracker this signal has changed
309
+ await tracker.notifyWrite(this)
310
+ }
311
+ }
312
+ ```
243
313
 
244
314
  <br/>
245
315
 
246
- ## a buildercore e280 project
316
+ ## 🧑‍💻 an e280 project
247
317
  free and open source by https://e280.org/
248
318
  join us if you're cool and good at dev
249
319
 
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@e280/strata",
3
- "version": "0.0.0-8",
3
+ "version": "0.0.0",
4
4
  "description": "state management",
5
5
  "license": "MIT",
6
6
  "author": "Chase Moskal <chasemoskal@gmail.com>",
7
7
  "type": "module",
8
- "main": "x/index.js",
8
+ "main": "./x/index.js",
9
9
  "files": [
10
10
  "x",
11
11
  "s"
@@ -14,8 +14,7 @@
14
14
  ".": "./x/index.js",
15
15
  "./signals": "./x/signals/index.js",
16
16
  "./tracker": "./x/tracker/index.js",
17
- "./tree": "./x/tree/index.js",
18
- "./*": "./*"
17
+ "./tree": "./x/tree/index.js"
19
18
  },
20
19
  "scripts": {
21
20
  "build": "run-s _clean _links _tsc",
@@ -30,13 +29,13 @@
30
29
  "_tscw": "tsc -w"
31
30
  },
32
31
  "dependencies": {
33
- "@e280/stz": "^0.0.0-28"
32
+ "@e280/stz": "^0.0.0"
34
33
  },
35
34
  "devDependencies": {
36
- "@e280/science": "^0.0.5",
37
- "@types/node": "^24.0.10",
35
+ "@e280/science": "^0.0.6",
36
+ "@types/node": "^24.3.0",
38
37
  "npm-run-all": "^4.1.5",
39
- "typescript": "^5.8.3"
38
+ "typescript": "^5.9.2"
40
39
  },
41
40
  "keywords": [
42
41
  "state",
@@ -7,14 +7,14 @@ export function effect(collector: () => void, responder: () => void = collector)
7
7
  }
8
8
 
9
9
  export function collectorEffect<C = void>(collector: () => C, responder: () => void = collector) {
10
- const {seen, result} = tracker.seen(collector)
10
+ const {seen, result} = tracker.observe(collector)
11
11
  const fn = debounce(0, responder)
12
12
 
13
13
  const disposers: (() => void)[] = []
14
14
  const dispose = () => disposers.forEach(d => d())
15
15
 
16
16
  for (const saw of seen) {
17
- const dispose = tracker.changed(saw, fn)
17
+ const dispose = tracker.subscribe(saw, fn)
18
18
  disposers.push(dispose)
19
19
  }
20
20
 
@@ -8,8 +8,8 @@ import {processSignalOptions, SignalCore} from "./units.js"
8
8
 
9
9
  export type Signal<V> = {
10
10
  (): V
11
- (v: V): Promise<void>
12
- (v?: V): V | Promise<void>
11
+ (v: V): Promise<V>
12
+ (v?: V): V | Promise<V>
13
13
 
14
14
  kind: "signal"
15
15
 
@@ -17,8 +17,8 @@ export type Signal<V> = {
17
17
  value: V
18
18
  on: Sub<[V]>
19
19
  get(): V
20
- set(v: V): Promise<void>
21
- publish(v?: V): Promise<void>
20
+ set(v: V): Promise<V>
21
+ publish(v?: V): Promise<V>
22
22
  dispose(): void
23
23
  } & SignalCore<V>
24
24
 
@@ -16,7 +16,7 @@ export class ReadableSignal<V> {
16
16
  constructor(public sneak: V) {}
17
17
 
18
18
  get() {
19
- tracker.see(this)
19
+ tracker.notifyRead(this)
20
20
  return this.sneak
21
21
  }
22
22
 
@@ -45,6 +45,7 @@ export class SignalCore<V> extends ReactiveSignal<V> {
45
45
  const isChanged = !this._options.compare(this.sneak, v)
46
46
  if (isChanged)
47
47
  await this.publish(v)
48
+ return v
48
49
  }
49
50
 
50
51
  get value() {
@@ -65,7 +66,7 @@ export class SignalCore<V> extends ReactiveSignal<V> {
65
66
  this._lock = true
66
67
  this.sneak = v
67
68
  promise = Promise.all([
68
- tracker.change(this),
69
+ tracker.notifyWrite(this),
69
70
  this.on.pub(v),
70
71
  ]) as any
71
72
  }
@@ -73,7 +74,8 @@ export class SignalCore<V> extends ReactiveSignal<V> {
73
74
  this._lock = false
74
75
  }
75
76
 
76
- return promise
77
+ await promise
78
+ return v
77
79
  }
78
80
  }
79
81
 
@@ -100,7 +102,7 @@ export class LazyCore<V> extends ReadableSignal<V> {
100
102
  const isChanged = !this._options.compare(this.sneak, v)
101
103
  if (isChanged) {
102
104
  this.sneak = v
103
- tracker.change(this)
105
+ tracker.notifyWrite(this)
104
106
  }
105
107
  }
106
108
  return super.get()
@@ -124,7 +126,7 @@ export class DerivedCore<V> extends ReactiveSignal<V> {
124
126
  if (isChanged) {
125
127
  that.sneak = value
126
128
  await Promise.all([
127
- tracker.change(that),
129
+ tracker.notifyWrite(that),
128
130
  that.on.pub(value),
129
131
  ])
130
132
  }
@@ -28,6 +28,15 @@ export default Science.suite({
28
28
  expect(count()).is(5)
29
29
  }),
30
30
 
31
+ "signal set and publish returns value": test(async() => {
32
+ const count = signal(0)
33
+ expect(count.value).is(0)
34
+
35
+ expect(await count.set(1)).is(1)
36
+ expect(await count(2)).is(2)
37
+ expect(await count.publish(3)).is(3)
38
+ }),
39
+
31
40
  "signal syntax interop": test(async() => {
32
41
  const count = signal(0)
33
42
 
@@ -8,13 +8,13 @@ export default Science.suite({
8
8
  let order: string[] = []
9
9
 
10
10
  const item = {}
11
- tracker.changed(item, async () => {
11
+ tracker.subscribe(item, async () => {
12
12
  await Promise.resolve()
13
13
  order.push("effect")
14
14
  })
15
15
 
16
16
  order.push("before")
17
- await tracker.change(item)
17
+ await tracker.notifyWrite(item)
18
18
  order.push("after")
19
19
 
20
20
  expect(order.length).is(3)
@@ -28,12 +28,12 @@ export default Science.suite({
28
28
  const item = {}
29
29
 
30
30
  // effect re-publishes the same change, creating a cycle
31
- tracker.changed(item, async() => {
32
- await tracker.change(item)
31
+ tracker.subscribe(item, async() => {
32
+ await tracker.notifyWrite(item)
33
33
  })
34
34
 
35
35
  expect(async() => {
36
- await tracker.change(item)
36
+ await tracker.notifyWrite(item)
37
37
  }).throwsAsync()
38
38
  }),
39
39
  })
@@ -4,16 +4,7 @@ import {sub, Sub} from "@e280/stz"
4
4
  export type TrackableItem = object | symbol
5
5
 
6
6
  /**
7
- * tracking system for state management
8
- * - it tracks when items are seen or changed
9
- *
10
- * for state item integration (like you're integrating a new kind of state object)
11
- * - items can call `tracker.see(this)` when they are accessed
12
- * - items can call `tracker.change(this)` when they are reassigned
13
- *
14
- * for reactivity integration (like you're integrating a new view library that reacts to state changes)
15
- * - run `tracker.seen(renderFn)`, collecting a set of seen items
16
- * - loop over each seen item, attach a changed handler `tracker.changed(item, handlerFn)`
7
+ * reactivity integration hub
17
8
  */
18
9
  export class Tracker<Item extends TrackableItem = any> {
19
10
  #seeables: Set<Item>[] = []
@@ -22,20 +13,12 @@ export class Tracker<Item extends TrackableItem = any> {
22
13
  #busy = new Set<Item>()
23
14
 
24
15
  /** indicate item was accessed */
25
- see(item: Item) {
16
+ notifyRead(item: Item) {
26
17
  this.#seeables.at(-1)?.add(item)
27
18
  }
28
19
 
29
- /** collect which items were seen during fn */
30
- seen<R>(fn: () => R) {
31
- this.#seeables.push(new Set())
32
- const result = fn()
33
- const seen = this.#seeables.pop()!
34
- return {seen, result}
35
- }
36
-
37
20
  /** indicate item was changed */
38
- async change(item: Item) {
21
+ async notifyWrite(item: Item) {
39
22
  if (this.#busy.has(item))
40
23
  throw new Error("circularity forbidden")
41
24
  const prom = this.#guaranteeChangeable(item).pub()
@@ -43,8 +26,16 @@ export class Tracker<Item extends TrackableItem = any> {
43
26
  return prom
44
27
  }
45
28
 
29
+ /** collect which items were seen during fn */
30
+ observe<R>(fn: () => R) {
31
+ this.#seeables.push(new Set())
32
+ const result = fn()
33
+ const seen = this.#seeables.pop()!
34
+ return {seen, result}
35
+ }
36
+
46
37
  /** respond to changes by calling fn */
47
- changed(item: Item, fn: () => Promise<void>) {
38
+ subscribe(item: Item, fn: () => Promise<void>) {
48
39
  return this.#guaranteeChangeable(item)(async() => {
49
40
  const collected = new Set<Promise<void>>()
50
41
  this.#changeStack.push(collected)
@@ -66,8 +57,6 @@ export class Tracker<Item extends TrackableItem = any> {
66
57
  }
67
58
  }
68
59
 
69
- const key = Symbol.for("e280.tracker.v2")
70
-
71
60
  /** standard global tracker for integrations */
72
- export const tracker: Tracker = (globalThis as any)[key] ??= new Tracker()
61
+ export const tracker: Tracker = (globalThis as any)[Symbol.for("e280.tracker")] ??= new Tracker()
73
62
 
@@ -4,12 +4,12 @@ export function effect(collector, responder = collector) {
4
4
  return collectorEffect(collector, responder).dispose;
5
5
  }
6
6
  export function collectorEffect(collector, responder = collector) {
7
- const { seen, result } = tracker.seen(collector);
7
+ const { seen, result } = tracker.observe(collector);
8
8
  const fn = debounce(0, responder);
9
9
  const disposers = [];
10
10
  const dispose = () => disposers.forEach(d => d());
11
11
  for (const saw of seen) {
12
- const dispose = tracker.changed(saw, fn);
12
+ const dispose = tracker.subscribe(saw, fn);
13
13
  disposers.push(dispose);
14
14
  }
15
15
  return { result, dispose };
@@ -1 +1 @@
1
- {"version":3,"file":"effect.js","sourceRoot":"","sources":["../../../s/signals/parts/effect.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAA;AAClC,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAA;AAEhD,MAAM,UAAU,MAAM,CAAC,SAAqB,EAAE,YAAwB,SAAS;IAC9E,OAAO,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,OAAO,CAAA;AACrD,CAAC;AAED,MAAM,UAAU,eAAe,CAAW,SAAkB,EAAE,YAAwB,SAAS;IAC9F,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC9C,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IAEjC,MAAM,SAAS,GAAmB,EAAE,CAAA;IACpC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IAEjD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QACxC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxB,CAAC;IAED,OAAO,EAAC,MAAM,EAAE,OAAO,EAAC,CAAA;AACzB,CAAC"}
1
+ {"version":3,"file":"effect.js","sourceRoot":"","sources":["../../../s/signals/parts/effect.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAA;AAClC,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAA;AAEhD,MAAM,UAAU,MAAM,CAAC,SAAqB,EAAE,YAAwB,SAAS;IAC9E,OAAO,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,OAAO,CAAA;AACrD,CAAC;AAED,MAAM,UAAU,eAAe,CAAW,SAAkB,EAAE,YAAwB,SAAS;IAC9F,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACjD,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IAEjC,MAAM,SAAS,GAAmB,EAAE,CAAA;IACpC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IAEjD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAC1C,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxB,CAAC;IAED,OAAO,EAAC,MAAM,EAAE,OAAO,EAAC,CAAA;AACzB,CAAC"}
@@ -3,15 +3,15 @@ import { SignalOptions } from "./types.js";
3
3
  import { SignalCore } from "./units.js";
4
4
  export type Signal<V> = {
5
5
  (): V;
6
- (v: V): Promise<void>;
7
- (v?: V): V | Promise<void>;
6
+ (v: V): Promise<V>;
7
+ (v?: V): V | Promise<V>;
8
8
  kind: "signal";
9
9
  sneak: V;
10
10
  value: V;
11
11
  on: Sub<[V]>;
12
12
  get(): V;
13
- set(v: V): Promise<void>;
14
- publish(v?: V): Promise<void>;
13
+ set(v: V): Promise<V>;
14
+ publish(v?: V): Promise<V>;
15
15
  dispose(): void;
16
16
  } & SignalCore<V>;
17
17
  export declare function signal<V>(value: V, options?: Partial<SignalOptions>): Signal<V>;
@@ -17,10 +17,10 @@ export declare class SignalCore<V> extends ReactiveSignal<V> {
17
17
  kind: "signal";
18
18
  _lock: boolean;
19
19
  constructor(sneak: V, _options: SignalOptions);
20
- set(v: V): Promise<void>;
20
+ set(v: V): Promise<V>;
21
21
  get value(): V;
22
22
  set value(v: V);
23
- publish(v?: V): Promise<void>;
23
+ publish(v?: V): Promise<V>;
24
24
  }
25
25
  export declare class LazyCore<V> extends ReadableSignal<V> {
26
26
  _formula: () => V;
@@ -13,7 +13,7 @@ export class ReadableSignal {
13
13
  this.sneak = sneak;
14
14
  }
15
15
  get() {
16
- tracker.see(this);
16
+ tracker.notifyRead(this);
17
17
  return this.sneak;
18
18
  }
19
19
  get value() {
@@ -38,6 +38,7 @@ export class SignalCore extends ReactiveSignal {
38
38
  const isChanged = !this._options.compare(this.sneak, v);
39
39
  if (isChanged)
40
40
  await this.publish(v);
41
+ return v;
41
42
  }
42
43
  get value() {
43
44
  return this.get();
@@ -53,14 +54,15 @@ export class SignalCore extends ReactiveSignal {
53
54
  this._lock = true;
54
55
  this.sneak = v;
55
56
  promise = Promise.all([
56
- tracker.change(this),
57
+ tracker.notifyWrite(this),
57
58
  this.on.pub(v),
58
59
  ]);
59
60
  }
60
61
  finally {
61
62
  this._lock = false;
62
63
  }
63
- return promise;
64
+ await promise;
65
+ return v;
64
66
  }
65
67
  }
66
68
  export class LazyCore extends ReadableSignal {
@@ -86,7 +88,7 @@ export class LazyCore extends ReadableSignal {
86
88
  const isChanged = !this._options.compare(this.sneak, v);
87
89
  if (isChanged) {
88
90
  this.sneak = v;
89
- tracker.change(this);
91
+ tracker.notifyWrite(this);
90
92
  }
91
93
  }
92
94
  return super.get();
@@ -108,7 +110,7 @@ export class DerivedCore extends ReactiveSignal {
108
110
  if (isChanged) {
109
111
  that.sneak = value;
110
112
  await Promise.all([
111
- tracker.change(that),
113
+ tracker.notifyWrite(that),
112
114
  that.on.pub(value),
113
115
  ]);
114
116
  }
@@ -1 +1 @@
1
- {"version":3,"file":"units.js","sourceRoot":"","sources":["../../../s/signals/parts/units.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"units.js","sourceRoot":"","sources":["../../../s/signals/parts/units.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,WAAW,CAAA;AAE7B,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAA;AAEhD,MAAM,oBAAoB,GAAkB;IAC3C,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;CAC1B,CAAA;AAED,MAAM,UAAU,oBAAoB,CAAC,UAAkC,EAAE;IACxE,OAAO,EAAC,GAAG,oBAAoB,EAAE,GAAG,OAAO,EAAC,CAAA;AAC7C,CAAC;AAED,MAAM,OAAO,cAAc;IACP;IAAnB,YAAmB,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAG,CAAC;IAE/B,GAAG;QACF,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACxB,OAAO,IAAI,CAAC,KAAK,CAAA;IAClB,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,GAAG,EAAE,CAAA;IAClB,CAAC;CACD;AAED,MAAM,OAAO,cAAkB,SAAQ,cAAiB;IACvD,EAAE,GAAG,GAAG,EAAO,CAAA;IAEf,OAAO;QACN,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;IAChB,CAAC;CACD;AAED,MAAM,OAAO,UAAc,SAAQ,cAAiB;IAItB;IAH7B,IAAI,GAAa,QAAQ,CAAA;IACzB,KAAK,GAAG,KAAK,CAAA;IAEb,YAAY,KAAQ,EAAS,QAAuB;QACnD,KAAK,CAAC,KAAK,CAAC,CAAA;QADgB,aAAQ,GAAR,QAAQ,CAAe;IAEpD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,CAAI;QACb,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QACvD,IAAI,SAAS;YACZ,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACtB,OAAO,CAAC,CAAA;IACT,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,GAAG,EAAE,CAAA;IAClB,CAAC;IAED,IAAI,KAAK,CAAC,CAAI;QACb,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACZ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;QAC3B,IAAI,IAAI,CAAC,KAAK;YACb,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAEtC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;QAE/B,IAAI,CAAC;YACJ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;YACjB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;YACd,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;gBACrB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;gBACzB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;aACd,CAAQ,CAAA;QACV,CAAC;gBACO,CAAC;YACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QACnB,CAAC;QAED,MAAM,OAAO,CAAA;QACb,OAAO,CAAC,CAAA;IACT,CAAC;CACD;AAED,MAAM,OAAO,QAAY,SAAQ,cAAiB;IAM9B;IAA0B;IAL7C,IAAI,GAAW,MAAM,CAAA;IAErB,MAAM,GAAG,KAAK,CAAA;IACd,OAAO,CAA0B;IAEjC,YAAmB,QAAiB,EAAS,QAAuB;QACnE,KAAK,CAAC,SAAgB,CAAC,CAAA;QADL,aAAQ,GAAR,QAAQ,CAAS;QAAS,aAAQ,GAAR,QAAQ,CAAe;IAEpE,CAAC;IAED,GAAG;QACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,EAAC,MAAM,EAAE,OAAO,EAAC,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;YAClF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;YACtB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAA;QACpB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;YAEnB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;YACzB,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;YACvD,IAAI,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;gBACd,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;YAC1B,CAAC;QACF,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,EAAE,CAAA;IACnB,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,GAAG,EAAE,CAAA;IAClB,CAAC;IAED,OAAO;QACN,IAAI,IAAI,CAAC,OAAO;YACf,IAAI,CAAC,OAAO,EAAE,CAAA;IAChB,CAAC;CACD;AAED,MAAM,OAAO,WAAe,SAAQ,cAAiB;IAkBhB;IAjBpC,MAAM,CAAC,IAAI,CAAI,IAAoB,EAAE,OAAgB,EAAE,OAAsB;QAC5E,MAAM,EAAC,MAAM,EAAE,OAAO,EAAC,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,IAAG,EAAE;YAC5D,MAAM,KAAK,GAAG,OAAO,EAAE,CAAA;YACvB,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YACrD,IAAI,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;gBAClB,MAAM,OAAO,CAAC,GAAG,CAAC;oBACjB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;oBACzB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;iBAClB,CAAC,CAAA;YACH,CAAC;QACF,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,CAAC;IAED,IAAI,GAAc,SAAS,CAAA;IAE3B,YAAY,YAAe,EAAS,OAAmB;QACtD,KAAK,CAAC,YAAY,CAAC,CAAA;QADgB,YAAO,GAAP,OAAO,CAAY;IAEvD,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,GAAG,EAAE,CAAA;IAClB,CAAC;IAED,OAAO;QACN,KAAK,CAAC,OAAO,EAAE,CAAA;QACf,IAAI,CAAC,OAAO,EAAE,CAAA;IACf,CAAC;CACD"}
@@ -2,6 +2,7 @@ import { Science } from "@e280/science";
2
2
  declare const _default: {
3
3
  "signal get/set value": Science.Test;
4
4
  "signal fn syntax": Science.Test;
5
+ "signal set and publish returns value": Science.Test;
5
6
  "signal syntax interop": Science.Test;
6
7
  "signal on is not debounced": Science.Test;
7
8
  "signal on only fires on change": Science.Test;
@@ -19,6 +19,13 @@ export default Science.suite({
19
19
  count(5);
20
20
  expect(count()).is(5);
21
21
  }),
22
+ "signal set and publish returns value": test(async () => {
23
+ const count = signal(0);
24
+ expect(count.value).is(0);
25
+ expect(await count.set(1)).is(1);
26
+ expect(await count(2)).is(2);
27
+ expect(await count.publish(3)).is(3);
28
+ }),
22
29
  "signal syntax interop": test(async () => {
23
30
  const count = signal(0);
24
31
  count.value = 1;
@@ -1 +1 @@
1
- {"version":3,"file":"signals.test.js","sourceRoot":"","sources":["../../s/signals/signals.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signals.test.js","sourceRoot":"","sources":["../../s/signals/signals.test.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,20 @@
1
1
  export type TrackableItem = object | symbol;
2
2
  /**
3
- * tracking system for state management
4
- * - it tracks when items are seen or changed
5
- *
6
- * for state item integration (like you're integrating a new kind of state object)
7
- * - items can call `tracker.see(this)` when they are accessed
8
- * - items can call `tracker.change(this)` when they are reassigned
9
- *
10
- * for reactivity integration (like you're integrating a new view library that reacts to state changes)
11
- * - run `tracker.seen(renderFn)`, collecting a set of seen items
12
- * - loop over each seen item, attach a changed handler `tracker.changed(item, handlerFn)`
3
+ * reactivity integration hub
13
4
  */
14
5
  export declare class Tracker<Item extends TrackableItem = any> {
15
6
  #private;
16
7
  /** indicate item was accessed */
17
- see(item: Item): void;
8
+ notifyRead(item: Item): void;
9
+ /** indicate item was changed */
10
+ notifyWrite(item: Item): Promise<void>;
18
11
  /** collect which items were seen during fn */
19
- seen<R>(fn: () => R): {
12
+ observe<R>(fn: () => R): {
20
13
  seen: Set<Item>;
21
14
  result: R;
22
15
  };
23
- /** indicate item was changed */
24
- change(item: Item): Promise<void>;
25
16
  /** respond to changes by calling fn */
26
- changed(item: Item, fn: () => Promise<void>): () => void;
17
+ subscribe(item: Item, fn: () => Promise<void>): () => void;
27
18
  }
28
19
  /** standard global tracker for integrations */
29
20
  export declare const tracker: Tracker;
@@ -1,15 +1,6 @@
1
1
  import { sub } from "@e280/stz";
2
2
  /**
3
- * tracking system for state management
4
- * - it tracks when items are seen or changed
5
- *
6
- * for state item integration (like you're integrating a new kind of state object)
7
- * - items can call `tracker.see(this)` when they are accessed
8
- * - items can call `tracker.change(this)` when they are reassigned
9
- *
10
- * for reactivity integration (like you're integrating a new view library that reacts to state changes)
11
- * - run `tracker.seen(renderFn)`, collecting a set of seen items
12
- * - loop over each seen item, attach a changed handler `tracker.changed(item, handlerFn)`
3
+ * reactivity integration hub
13
4
  */
14
5
  export class Tracker {
15
6
  #seeables = [];
@@ -17,26 +8,26 @@ export class Tracker {
17
8
  #changeStack = [];
18
9
  #busy = new Set();
19
10
  /** indicate item was accessed */
20
- see(item) {
11
+ notifyRead(item) {
21
12
  this.#seeables.at(-1)?.add(item);
22
13
  }
23
- /** collect which items were seen during fn */
24
- seen(fn) {
25
- this.#seeables.push(new Set());
26
- const result = fn();
27
- const seen = this.#seeables.pop();
28
- return { seen, result };
29
- }
30
14
  /** indicate item was changed */
31
- async change(item) {
15
+ async notifyWrite(item) {
32
16
  if (this.#busy.has(item))
33
17
  throw new Error("circularity forbidden");
34
18
  const prom = this.#guaranteeChangeable(item).pub();
35
19
  this.#changeStack.at(-1)?.add(prom);
36
20
  return prom;
37
21
  }
22
+ /** collect which items were seen during fn */
23
+ observe(fn) {
24
+ this.#seeables.push(new Set());
25
+ const result = fn();
26
+ const seen = this.#seeables.pop();
27
+ return { seen, result };
28
+ }
38
29
  /** respond to changes by calling fn */
39
- changed(item, fn) {
30
+ subscribe(item, fn) {
40
31
  return this.#guaranteeChangeable(item)(async () => {
41
32
  const collected = new Set();
42
33
  this.#changeStack.push(collected);
@@ -56,7 +47,6 @@ export class Tracker {
56
47
  return on;
57
48
  }
58
49
  }
59
- const key = Symbol.for("e280.tracker.v2");
60
50
  /** standard global tracker for integrations */
61
- export const tracker = globalThis[key] ??= new Tracker();
51
+ export const tracker = globalThis[Symbol.for("e280.tracker")] ??= new Tracker();
62
52
  //# sourceMappingURL=tracker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../s/tracker/tracker.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAM,MAAM,WAAW,CAAA;AAIlC;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,OAAO;IACnB,SAAS,GAAgB,EAAE,CAAA;IAC3B,YAAY,GAAG,IAAI,OAAO,EAAa,CAAA;IACvC,YAAY,GAAyB,EAAE,CAAA;IACvC,KAAK,GAAG,IAAI,GAAG,EAAQ,CAAA;IAEvB,iCAAiC;IACjC,GAAG,CAAC,IAAU;QACb,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,8CAA8C;IAC9C,IAAI,CAAI,EAAW;QAClB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;QAC9B,MAAM,MAAM,GAAG,EAAE,EAAE,CAAA;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAG,CAAA;QAClC,OAAO,EAAC,IAAI,EAAE,MAAM,EAAC,CAAA;IACtB,CAAC;IAED,gCAAgC;IAChC,KAAK,CAAC,MAAM,CAAC,IAAU;QACtB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAA;QAClD,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;QACnC,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,uCAAuC;IACvC,OAAO,CAAC,IAAU,EAAE,EAAuB;QAC1C,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,KAAK,IAAG,EAAE;YAChD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiB,CAAA;YAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACpB,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;YACnB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACvB,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAA;QACxB,CAAC,CAAC,CAAA;IACH,CAAC;IAED,oBAAoB,CAAC,IAAU;QAC9B,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,CAAC,EAAE,EAAE,CAAC;YACT,EAAE,GAAG,GAAG,EAAE,CAAA;YACV,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAChC,CAAC;QACD,OAAO,EAAE,CAAA;IACV,CAAC;CACD;AAED,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;AAEzC,+CAA+C;AAC/C,MAAM,CAAC,MAAM,OAAO,GAAa,UAAkB,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,EAAE,CAAA"}
1
+ {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../s/tracker/tracker.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAM,MAAM,WAAW,CAAA;AAIlC;;GAEG;AACH,MAAM,OAAO,OAAO;IACnB,SAAS,GAAgB,EAAE,CAAA;IAC3B,YAAY,GAAG,IAAI,OAAO,EAAa,CAAA;IACvC,YAAY,GAAyB,EAAE,CAAA;IACvC,KAAK,GAAG,IAAI,GAAG,EAAQ,CAAA;IAEvB,iCAAiC;IACjC,UAAU,CAAC,IAAU;QACpB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,gCAAgC;IAChC,KAAK,CAAC,WAAW,CAAC,IAAU;QAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAA;QAClD,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;QACnC,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,8CAA8C;IAC9C,OAAO,CAAI,EAAW;QACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;QAC9B,MAAM,MAAM,GAAG,EAAE,EAAE,CAAA;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAG,CAAA;QAClC,OAAO,EAAC,IAAI,EAAE,MAAM,EAAC,CAAA;IACtB,CAAC;IAED,uCAAuC;IACvC,SAAS,CAAC,IAAU,EAAE,EAAuB;QAC5C,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,KAAK,IAAG,EAAE;YAChD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiB,CAAA;YAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACpB,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;YACnB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACvB,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAA;QACxB,CAAC,CAAC,CAAA;IACH,CAAC;IAED,oBAAoB,CAAC,IAAU;QAC9B,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,CAAC,EAAE,EAAE,CAAC;YACT,EAAE,GAAG,GAAG,EAAE,CAAA;YACV,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAChC,CAAC;QACD,OAAO,EAAE,CAAA;IACV,CAAC;CACD;AAED,+CAA+C;AAC/C,MAAM,CAAC,MAAM,OAAO,GAAa,UAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,IAAI,OAAO,EAAE,CAAA"}
@@ -5,12 +5,12 @@ export default Science.suite({
5
5
  const tracker = new Tracker();
6
6
  let order = [];
7
7
  const item = {};
8
- tracker.changed(item, async () => {
8
+ tracker.subscribe(item, async () => {
9
9
  await Promise.resolve();
10
10
  order.push("effect");
11
11
  });
12
12
  order.push("before");
13
- await tracker.change(item);
13
+ await tracker.notifyWrite(item);
14
14
  order.push("after");
15
15
  expect(order.length).is(3);
16
16
  expect(order[0]).is("before");
@@ -21,11 +21,11 @@ export default Science.suite({
21
21
  const tracker = new Tracker();
22
22
  const item = {};
23
23
  // effect re-publishes the same change, creating a cycle
24
- tracker.changed(item, async () => {
25
- await tracker.change(item);
24
+ tracker.subscribe(item, async () => {
25
+ await tracker.notifyWrite(item);
26
26
  });
27
27
  expect(async () => {
28
- await tracker.change(item);
28
+ await tracker.notifyWrite(item);
29
29
  }).throwsAsync();
30
30
  }),
31
31
  });
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.test.js","sourceRoot":"","sources":["../../s/tracker/tracker.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAC,MAAM,eAAe,CAAA;AACnD,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAA;AAEpC,eAAe,OAAO,CAAC,KAAK,CAAC;IAC5B,+CAA+C,EAAE,IAAI,CAAC,KAAK,IAAG,EAAE;QAC/D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;QAC7B,IAAI,KAAK,GAAa,EAAE,CAAA;QAExB,MAAM,IAAI,GAAG,EAAE,CAAA;QACf,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YAChC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;YACvB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACrB,CAAC,CAAC,CAAA;QAEF,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACpB,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC1B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAEnB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;QAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;QAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC,CAAC;IAEF,uBAAuB,EAAE,IAAI,CAAC,KAAK,IAAG,EAAE;QACvC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;QAC7B,MAAM,IAAI,GAAG,EAAE,CAAA;QAEf,wDAAwD;QACxD,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,IAAG,EAAE;YAC/B,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC,CAAC,CAAA;QAEF,MAAM,CAAC,KAAK,IAAG,EAAE;YAChB,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IACjB,CAAC,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"tracker.test.js","sourceRoot":"","sources":["../../s/tracker/tracker.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAC,MAAM,eAAe,CAAA;AACnD,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAA;AAEpC,eAAe,OAAO,CAAC,KAAK,CAAC;IAC5B,+CAA+C,EAAE,IAAI,CAAC,KAAK,IAAG,EAAE;QAC/D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;QAC7B,IAAI,KAAK,GAAa,EAAE,CAAA;QAExB,MAAM,IAAI,GAAG,EAAE,CAAA;QACf,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YAClC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;YACvB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACrB,CAAC,CAAC,CAAA;QAEF,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACpB,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QAC/B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAEnB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;QAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;QAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC,CAAC;IAEF,uBAAuB,EAAE,IAAI,CAAC,KAAK,IAAG,EAAE;QACvC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;QAC7B,MAAM,IAAI,GAAG,EAAE,CAAA;QAEf,wDAAwD;QACxD,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,IAAG,EAAE;YACjC,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;QAEF,MAAM,CAAC,KAAK,IAAG,EAAE;YAChB,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IACjB,CAAC,CAAC;CACF,CAAC,CAAA"}