synstate 4.1.0 → 5.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 +58 -1
- package/dist/core/class/child-observable-class.d.mts +4 -7
- package/dist/core/class/child-observable-class.d.mts.map +1 -1
- package/dist/core/class/child-observable-class.mjs +8 -25
- package/dist/core/class/child-observable-class.mjs.map +1 -1
- package/dist/core/class/create-child-observable.d.mts +8 -5
- package/dist/core/class/create-child-observable.d.mts.map +1 -1
- package/dist/core/class/create-child-observable.mjs.map +1 -1
- package/dist/core/class/manager-observable-class.d.mts +4 -15
- package/dist/core/class/manager-observable-class.d.mts.map +1 -1
- package/dist/core/class/manager-observable-class.mjs +5 -91
- package/dist/core/class/manager-observable-class.mjs.map +1 -1
- package/dist/core/class/observable-base-class.d.mts +9 -2
- package/dist/core/class/observable-base-class.d.mts.map +1 -1
- package/dist/core/class/observable-base-class.mjs +17 -0
- package/dist/core/class/observable-base-class.mjs.map +1 -1
- package/dist/core/class/observable-node.d.mts +4 -8
- package/dist/core/class/observable-node.d.mts.map +1 -1
- package/dist/core/class/observable-node.mjs.map +1 -1
- package/dist/core/class/propagation-state.d.mts +26 -0
- package/dist/core/class/propagation-state.d.mts.map +1 -1
- package/dist/core/class/propagation-state.mjs +190 -0
- package/dist/core/class/propagation-state.mjs.map +1 -1
- package/dist/core/operators/index.d.mts +1 -0
- package/dist/core/operators/index.d.mts.map +1 -1
- package/dist/core/operators/index.mjs +1 -0
- package/dist/core/operators/index.mjs.map +1 -1
- package/dist/core/operators/keep-equal-parts.d.mts +85 -0
- package/dist/core/operators/keep-equal-parts.d.mts.map +1 -0
- package/dist/core/operators/keep-equal-parts.mjs +129 -0
- package/dist/core/operators/keep-equal-parts.mjs.map +1 -0
- package/dist/core/types/id.d.mts +6 -2
- package/dist/core/types/id.d.mts.map +1 -1
- package/dist/core/types/observable-family.d.mts +1 -0
- package/dist/core/types/observable-family.d.mts.map +1 -1
- package/dist/core/utils/id-maker.d.mts +0 -8
- package/dist/core/utils/id-maker.d.mts.map +1 -1
- package/dist/core/utils/id-maker.mjs +1 -11
- package/dist/core/utils/id-maker.mjs.map +1 -1
- package/dist/utils/create-reducer.d.mts +30 -1
- package/dist/utils/create-reducer.d.mts.map +1 -1
- package/dist/utils/create-reducer.mjs +8 -1
- package/dist/utils/create-reducer.mjs.map +1 -1
- package/dist/utils/create-state.d.mts +53 -1
- package/dist/utils/create-state.d.mts.map +1 -1
- package/dist/utils/create-state.mjs +52 -0
- package/dist/utils/create-state.mjs.map +1 -1
- package/package.json +9 -9
- package/src/core/class/child-observable-class.mts +15 -49
- package/src/core/class/create-child-observable.mts +8 -5
- package/src/core/class/manager-observable-class.mts +15 -134
- package/src/core/class/observable-base-class.mts +23 -2
- package/src/core/class/observable-node.mts +5 -11
- package/src/core/class/propagation-order.test.mts +107 -0
- package/src/core/class/propagation-state.mts +262 -0
- package/src/core/class/remove-completed.test.mts +2 -2
- package/src/core/class/update-loop.test.mts +104 -0
- package/src/core/operators/index.mts +1 -0
- package/src/core/operators/keep-equal-parts.mts +167 -0
- package/src/core/operators/keep-equal-parts.test.mts +132 -0
- package/src/core/types/id.mts +6 -2
- package/src/core/types/observable-family.mts +5 -0
- package/src/core/utils/id-maker.mts +1 -12
- package/src/utils/create-reducer.mts +42 -2
- package/src/utils/create-state.mts +53 -1
- package/src/utils/create-state.test.mts +88 -0
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
- 🎯 **Simple State Management**: Easy-to-use `createState` and `createReducer` similar to React useState/useReducer for global state
|
|
25
25
|
- ⚡ **High Performance**: Optimized for fast state updates and minimal re-renders
|
|
26
26
|
- 🎨 **Type-Safe**: Full TypeScript support with precise type inference
|
|
27
|
-
- 🚀 **Lightweight**: <!-- bundle-size:synstate -->~6.
|
|
27
|
+
- 🚀 **Lightweight**: <!-- bundle-size:synstate -->~6.5 kB min+gzip<!-- /bundle-size:synstate --> with two external runtime dependencies ([ts-data-forge](https://www.npmjs.com/package/ts-data-forge) and [ts-std-forge](https://www.npmjs.com/package/ts-std-forge), and the first depends on the second)
|
|
28
28
|
- 🌐 **Framework Agnostic**: Works with React, Vue, Svelte, or vanilla JavaScript
|
|
29
29
|
- 🔄 **Reactive Updates**: Automatic propagation of state changes to all subscribers
|
|
30
30
|
- 📡 **Event System**: Built-in `createValueEmitter`, `createEventEmitter` for event-driven architecture
|
|
@@ -334,6 +334,62 @@ dispatch({ type: 'add', amount: 2 });
|
|
|
334
334
|
assert.deepStrictEqual(countHistory, [0, 0, 2]);
|
|
335
335
|
```
|
|
336
336
|
|
|
337
|
+
### Keeping the Parts an Update Did Not Change (`keepEqualParts`)
|
|
338
|
+
|
|
339
|
+
A state written whole from a source that answers with a new object every time, such as a server polled for a report, can take `keepEqualParts: true`. The next state is compared with the current one before it is written: every part deeply equal to the same part of the current state is replaced by that part, so whatever reads an unchanged part keeps the object it has and `skipIfNoChange()` with `Object.is` stops it, and an answer that changes nothing is not passed on at all. Array items are matched by index; `keepEqualParts: { key }` matches them by key. The comparison is `replaceEqualDeep` of ts-data-forge, which serves any other write too.
|
|
340
|
+
|
|
341
|
+
```tsx
|
|
342
|
+
type PullReport = DeepReadonly<{
|
|
343
|
+
summary: { open: number };
|
|
344
|
+
pulls: { number: number; title: string }[];
|
|
345
|
+
}>;
|
|
346
|
+
|
|
347
|
+
const [report, setReport] = createState<PullReport>(
|
|
348
|
+
{ summary: { open: 0 }, pulls: [] },
|
|
349
|
+
{ keepEqualParts: true },
|
|
350
|
+
);
|
|
351
|
+
|
|
352
|
+
const summary = report.pipe(map((r) => r.summary)).pipe(skipIfNoChange());
|
|
353
|
+
|
|
354
|
+
const summaryHistory: unknown[] = [];
|
|
355
|
+
|
|
356
|
+
summary.subscribe((value) => {
|
|
357
|
+
summaryHistory.push(value);
|
|
358
|
+
});
|
|
359
|
+
|
|
360
|
+
// A server answers each poll with the whole report, a new object every
|
|
361
|
+
// time. What did not change keeps the object already held.
|
|
362
|
+
setReport({
|
|
363
|
+
summary: { open: 1 },
|
|
364
|
+
pulls: [{ number: 1, title: 'one' }],
|
|
365
|
+
});
|
|
366
|
+
|
|
367
|
+
const held = report.getSnapshot().value;
|
|
368
|
+
|
|
369
|
+
// An answer that changes nothing is not passed on at all.
|
|
370
|
+
setReport({
|
|
371
|
+
summary: { open: 1 },
|
|
372
|
+
pulls: [{ number: 1, title: 'one' }],
|
|
373
|
+
});
|
|
374
|
+
|
|
375
|
+
assert.strictEqual(report.getSnapshot().value, held);
|
|
376
|
+
|
|
377
|
+
// An edited title: a new report and a new array, while the summary is
|
|
378
|
+
// the one held, so `summary` is not told of it.
|
|
379
|
+
setReport({
|
|
380
|
+
summary: { open: 1 },
|
|
381
|
+
pulls: [{ number: 1, title: 'one (edited)' }],
|
|
382
|
+
});
|
|
383
|
+
|
|
384
|
+
assert.notStrictEqual(report.getSnapshot().value, held);
|
|
385
|
+
|
|
386
|
+
assert.strictEqual(report.getSnapshot().value.summary, held.summary);
|
|
387
|
+
|
|
388
|
+
assert.deepStrictEqual(summaryHistory, [{ open: 0 }, { open: 1 }]);
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
Keep references where the value is written, as here, rather than downstream. The `keepEqualParts()` operator does the same to a stream, but every update that changes nothing has already been passed on by then, so keep it for a source that is not yours to change.
|
|
392
|
+
|
|
337
393
|
### Global Counter State (React)
|
|
338
394
|
|
|
339
395
|
```tsx
|
|
@@ -684,6 +740,7 @@ For complex scenarios, SynState provides observable-based APIs:
|
|
|
684
740
|
- Filtering
|
|
685
741
|
- `filter(predicate)`: Filter values
|
|
686
742
|
- `skipIfNoChange()`: Skip duplicate values (alias: `distinctUntilChanged`)
|
|
743
|
+
- `keepEqualParts()`: Keep the parts equal to the last value and skip a value equal to it as a whole; prefer the `keepEqualParts` option of `createState`
|
|
687
744
|
- `skip(n)`: Skip first n emissions
|
|
688
745
|
- `take(n)`: Take first n emissions then complete
|
|
689
746
|
- `skipWhile(predicate)`: Skip values while predicate is true
|
|
@@ -2,7 +2,6 @@ import { type Optional, type Some } from 'ts-data-forge';
|
|
|
2
2
|
import type { AsyncChildObservable, DropInitialValueOperator, InitializedObservable, InitializedSyncChildObservable, KeepInitialValueOperator, NonEmptyUnknownList, Observable, SyncChildObservable, WithInitialValueOperator, Wrap } from '../types/index.mjs';
|
|
3
3
|
import { ManagerObservableClass } from './manager-observable-class.mjs';
|
|
4
4
|
import { ObservableBaseClass } from './observable-base-class.mjs';
|
|
5
|
-
import { type ManagerNode } from './observable-node.mjs';
|
|
6
5
|
type ChildObservableConfig<A, P extends NonEmptyUnknownList> = Readonly<{
|
|
7
6
|
parents: Wrap<P>;
|
|
8
7
|
/**
|
|
@@ -26,14 +25,12 @@ type ChildObservableConfig<A, P extends NonEmptyUnknownList> = Readonly<{
|
|
|
26
25
|
export declare class SyncChildObservableClass<A, const P extends NonEmptyUnknownList> extends ObservableBaseClass<A, 'sync child', number> implements SyncChildObservable<A, P> {
|
|
27
26
|
#private;
|
|
28
27
|
readonly parents: Wrap<P>;
|
|
29
|
-
readonly managers: readonly ManagerNode[];
|
|
30
28
|
constructor({ parents, depth, initialValue, }: ChildObservableConfig<A, P>);
|
|
31
29
|
/**
|
|
32
|
-
* Joins the current scope and registers this observable to its parents
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* leave a reference in each parent.
|
|
30
|
+
* Joins the current scope and registers this observable to its parents.
|
|
31
|
+
* Completed parents never update again, so a child created under them is
|
|
32
|
+
* complete from the start (#2248), as is one its constructor completed;
|
|
33
|
+
* registering it would only leave a reference in each parent.
|
|
37
34
|
*/
|
|
38
35
|
protected attach(): void;
|
|
39
36
|
protected detach(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"child-observable-class.d.mts","sourceRoot":"","sources":["../../../src/core/class/child-observable-class.mts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"child-observable-class.d.mts","sourceRoot":"","sources":["../../../src/core/class/child-observable-class.mts"],"names":[],"mappings":"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"}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { hasKey, isRecord } from 'ts-data-forge';
|
|
6
6
|
import { panic } from 'ts-std-forge';
|
|
7
7
|
import { maxDepth } from '../utils/index.mjs';
|
|
8
8
|
import { ManagerObservableClass } from './manager-observable-class.mjs';
|
|
9
9
|
import { ObservableBaseClass } from './observable-base-class.mjs';
|
|
10
|
-
import { toNode
|
|
10
|
+
import { toNode } from './observable-node.mjs';
|
|
11
11
|
import { runAfterPropagation } from './propagation-state.mjs';
|
|
12
12
|
|
|
13
13
|
|
|
@@ -20,7 +20,6 @@ import { runAfterPropagation } from './propagation-state.mjs';
|
|
|
20
20
|
export class SyncChildObservableClass extends ObservableBaseClass {
|
|
21
21
|
#mut_isAttached;
|
|
22
22
|
parents;
|
|
23
|
-
managers;
|
|
24
23
|
constructor({ parents, depth = 1 + maxDepth(parents), initialValue, }) {
|
|
25
24
|
super({
|
|
26
25
|
kind: 'sync child',
|
|
@@ -28,7 +27,6 @@ export class SyncChildObservableClass extends ObservableBaseClass {
|
|
|
28
27
|
initialValue,
|
|
29
28
|
});
|
|
30
29
|
this.parents = parents;
|
|
31
|
-
this.managers = managersOf(parents);
|
|
32
30
|
this.#mut_isAttached = false;
|
|
33
31
|
}
|
|
34
32
|
|
|
@@ -37,14 +35,13 @@ export class SyncChildObservableClass extends ObservableBaseClass {
|
|
|
37
35
|
|
|
38
36
|
|
|
39
37
|
|
|
40
|
-
|
|
41
38
|
attach() {
|
|
42
39
|
this.adoptIntoCurrentScope();
|
|
43
40
|
if (this.isCompleted || this.parents.every((p) => p.isCompleted)) {
|
|
44
41
|
this.complete();
|
|
45
42
|
}
|
|
46
43
|
else {
|
|
47
|
-
registerChild(this
|
|
44
|
+
registerChild(this);
|
|
48
45
|
this.#mut_isAttached = true;
|
|
49
46
|
}
|
|
50
47
|
}
|
|
@@ -53,7 +50,7 @@ export class SyncChildObservableClass extends ObservableBaseClass {
|
|
|
53
50
|
return;
|
|
54
51
|
}
|
|
55
52
|
this.#mut_isAttached = false;
|
|
56
|
-
unregisterChild(this
|
|
53
|
+
unregisterChild(this);
|
|
57
54
|
}
|
|
58
55
|
tryComplete() {
|
|
59
56
|
if (shouldComplete(this)) {
|
|
@@ -105,7 +102,7 @@ export class AsyncChildObservableClass extends ManagerObservableClass {
|
|
|
105
102
|
this.complete();
|
|
106
103
|
}
|
|
107
104
|
else {
|
|
108
|
-
registerChild(this
|
|
105
|
+
registerChild(this);
|
|
109
106
|
this.#mut_isAttached = true;
|
|
110
107
|
}
|
|
111
108
|
}
|
|
@@ -114,7 +111,7 @@ export class AsyncChildObservableClass extends ManagerObservableClass {
|
|
|
114
111
|
return;
|
|
115
112
|
}
|
|
116
113
|
this.#mut_isAttached = false;
|
|
117
|
-
unregisterChild(this
|
|
114
|
+
unregisterChild(this);
|
|
118
115
|
}
|
|
119
116
|
tryComplete() {
|
|
120
117
|
if (shouldComplete(this)) {
|
|
@@ -156,38 +153,24 @@ export class InitializedSyncChildObservableClass extends SyncChildObservableClas
|
|
|
156
153
|
const shouldComplete = (child) => !child.isCompleted &&
|
|
157
154
|
(child.parents.every((p) => p.isCompleted) || child.canEmitNoMore());
|
|
158
155
|
|
|
159
|
-
const registerChild = (child
|
|
156
|
+
const registerChild = (child) => {
|
|
160
157
|
if (checksCircularDependency) {
|
|
161
158
|
detectCircularDependency(child);
|
|
162
159
|
}
|
|
163
160
|
for (const p of child.parents) {
|
|
164
161
|
toNode(p).addChild(child);
|
|
165
162
|
}
|
|
166
|
-
for (const m of managers) {
|
|
167
|
-
m.addDescendant(child);
|
|
168
|
-
}
|
|
169
163
|
};
|
|
170
164
|
|
|
171
165
|
|
|
172
166
|
|
|
173
167
|
|
|
174
168
|
|
|
175
|
-
|
|
176
|
-
const unregisterChild = (child, managers) => {
|
|
169
|
+
const unregisterChild = (child) => {
|
|
177
170
|
for (const p of child.parents) {
|
|
178
171
|
toNode(p).deleteChild(child);
|
|
179
172
|
}
|
|
180
|
-
for (const m of managers) {
|
|
181
|
-
m.deleteDescendant(child);
|
|
182
|
-
}
|
|
183
173
|
};
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
const managersOf = (parents) => Arr.isFixedLengthArray(1, parents)
|
|
189
|
-
? toNode(parents[0]).managers
|
|
190
|
-
: Array.from(new Set(parents.flatMap((p) => toNode(p).managers)));
|
|
191
174
|
const isDevelopmentProcess = () => {
|
|
192
175
|
const proc = Reflect.get(globalThis, 'process');
|
|
193
176
|
return (isRecord(proc) &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"child-observable-class.mjs","sourceRoot":"","sources":["../../../src/core/class/child-observable-class.mts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,gDAAgD;AAChD,0DAA0D;AAC1D,kEAAkE;AAClE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"child-observable-class.mjs","sourceRoot":"","sources":["../../../src/core/class/child-observable-class.mts"],"names":[],"mappings":"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"}
|
|
@@ -37,7 +37,10 @@ export type AsyncChildObservableTools<A> = Readonly<{
|
|
|
37
37
|
* hooks the factory calls, which read the state `init` creates.
|
|
38
38
|
*/
|
|
39
39
|
export type SyncChildObservableHooks = Readonly<{
|
|
40
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Called with the token of every update in which a parent of this
|
|
42
|
+
* observable emitted.
|
|
43
|
+
*/
|
|
41
44
|
tryUpdate: (updateToken: UpdateToken) => void;
|
|
42
45
|
/**
|
|
43
46
|
* Whether this observable can emit nothing more although some parent is
|
|
@@ -84,10 +87,10 @@ export type InitializedChildObservableConfig<A, P extends NonEmptyUnknownList> =
|
|
|
84
87
|
* other synchronous operators are built with it.
|
|
85
88
|
*
|
|
86
89
|
* `init` runs during construction and receives the tools. It returns
|
|
87
|
-
* `tryUpdate`, which is called with the token of every update
|
|
88
|
-
* this observable — a parent that did not emit in that
|
|
89
|
-
* `updateToken`; to emit, call `setNext` with the
|
|
90
|
-
* object holding `tryUpdate` and the other hooks
|
|
90
|
+
* `tryUpdate`, which is called with the token of every update in which some
|
|
91
|
+
* parent of this observable emitted — a parent that did not emit in that
|
|
92
|
+
* update has a different `updateToken`; to emit, call `setNext` with the
|
|
93
|
+
* token received — or an object holding `tryUpdate` and the other hooks
|
|
91
94
|
* ({@link SyncChildObservableHooks}). State the hooks share can live inside
|
|
92
95
|
* `init`, next to the teardown it registers with the `onComplete` tool.
|
|
93
96
|
* `init` may complete the observable; it is then never registered to its
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-child-observable.d.mts","sourceRoot":"","sources":["../../../src/core/class/create-child-observable.mts"],"names":[],"mappings":"AAIA,OAAO,EAAO,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,KAAK,EACV,oBAAoB,EACpB,8BAA8B,EAC9B,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,IAAI,EACL,MAAM,oBAAoB,CAAC;AAM5B;;;GAGG;AACH,MAAM,MAAM,wBAAwB,CAAC,CAAC,IAAI,QAAQ,CAAC;IACjD,sEAAsE;IACtE,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;IAE1D,WAAW,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE/B,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,IAAI,CAAC;IAErB;;;OAGG;IACH,wBAAwB,EAAE,MAAM,IAAI,CAAC;IAErC;;;;;;OAMG;IACH,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CAC5C,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,MAAM,yBAAyB,CAAC,CAAC,IAAI,QAAQ,CAAC;IAClD,sEAAsE;IACtE,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,IAAI,CAAC;CACrC,CAAC,GACA,wBAAwB,CAAC,CAAC,CAAC,CAAC;AAE9B;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC9C
|
|
1
|
+
{"version":3,"file":"create-child-observable.d.mts","sourceRoot":"","sources":["../../../src/core/class/create-child-observable.mts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-child-observable.mjs","sourceRoot":"","sources":["../../../src/core/class/create-child-observable.mts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,gDAAgD;AAChD,0DAA0D;AAC1D,kEAAkE;AAClE,OAAO,EAAE,GAAG,EAA4B,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAS3C,OAAO,EACL,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"create-child-observable.mjs","sourceRoot":"","sources":["../../../src/core/class/create-child-observable.mts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,14 @@
|
|
|
1
|
-
import type { Optional } from 'ts-data-forge';
|
|
2
1
|
import type { ManagerObservableKind } from '../types/index.mjs';
|
|
3
2
|
import { ObservableBaseClass } from './observable-base-class.mjs';
|
|
4
|
-
import type { ChildNode, ManagerNode } from './observable-node.mjs';
|
|
5
3
|
/**
|
|
6
4
|
* The base of the observables that start updates of their own: a root, and
|
|
7
5
|
* an async child (`debounce`, `switchMap`), which emits later than its
|
|
8
|
-
* parents do.
|
|
9
|
-
*
|
|
10
|
-
* parents' values of that
|
|
6
|
+
* parents do. Its update visits, shallowest first, the nodes its value
|
|
7
|
+
* reaches: each node that emits puts its children in the update's queue
|
|
8
|
+
* (`propagation-state.mts`), so that each sees its parents' values of that
|
|
9
|
+
* update (no glitch) and a node no value reached is not visited.
|
|
11
10
|
*/
|
|
12
11
|
export declare class ManagerObservableClass<A, Kind extends ManagerObservableKind, Depth extends number> extends ObservableBaseClass<A, Kind, Depth> {
|
|
13
|
-
#private;
|
|
14
|
-
/** The managers this node's descendants register to: itself. */
|
|
15
|
-
readonly managers: readonly ManagerNode[];
|
|
16
|
-
constructor(config: Readonly<{
|
|
17
|
-
kind: Kind;
|
|
18
|
-
depth: Depth;
|
|
19
|
-
initialValue: Optional<A>;
|
|
20
|
-
}>);
|
|
21
|
-
addDescendant(child: ChildNode): void;
|
|
22
|
-
deleteDescendant(child: ChildNode): void;
|
|
23
12
|
/** Emits `nextValue` and propagates it to the descendants. */
|
|
24
13
|
protected startUpdate(nextValue: A): void;
|
|
25
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager-observable-class.d.mts","sourceRoot":"","sources":["../../../src/core/class/manager-observable-class.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manager-observable-class.d.mts","sourceRoot":"","sources":["../../../src/core/class/manager-observable-class.mts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AASlE;;;;;;;GAOG;AACH,qBAAa,sBAAsB,CACjC,CAAC,EACD,IAAI,SAAS,qBAAqB,EAClC,KAAK,SAAS,MAAM,CACpB,SAAQ,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC;IAC3C,8DAA8D;IAC9D,SAAS,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAkBxC;CACF"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { issueUpdateToken } from '../utils/index.mjs';
|
|
2
1
|
import { ObservableBaseClass } from './observable-base-class.mjs';
|
|
3
|
-
import { beginPropagation, endPropagation } from './propagation-state.mjs';
|
|
2
|
+
import { beginPropagation, closeUpdate, drainUpdate, endPropagation, openUpdate, } from './propagation-state.mjs';
|
|
4
3
|
|
|
5
4
|
|
|
6
5
|
|
|
@@ -8,87 +7,11 @@ import { beginPropagation, endPropagation } from './propagation-state.mjs';
|
|
|
8
7
|
|
|
9
8
|
|
|
10
9
|
|
|
11
|
-
export class ManagerObservableClass extends ObservableBaseClass {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
#mut_propagationOrder;
|
|
27
|
-
|
|
28
|
-
#mut_isPropagating;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
10
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
managers;
|
|
38
|
-
constructor(config) {
|
|
39
|
-
super(config);
|
|
40
|
-
this.managers = [this];
|
|
41
|
-
this.#mut_propagationOrder = [];
|
|
42
|
-
this.#mut_isPropagating = false;
|
|
43
|
-
this.#mut_joinedDuringUpdate = undefined;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
#propagate(updateToken) {
|
|
50
|
-
for (const bucket of this.#mut_propagationOrder) {
|
|
51
|
-
if (bucket !== undefined) {
|
|
52
|
-
for (const c of bucket) {
|
|
53
|
-
|
|
54
|
-
if (this.#mut_joinedDuringUpdate?.has(c) !== true) {
|
|
55
|
-
c.tryUpdate(updateToken);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
addDescendant(child) {
|
|
62
|
-
const descendants = this.#mut_propagationOrder;
|
|
63
|
-
const index = child.depth - this.depth - 1;
|
|
64
|
-
const mut_bucket = descendants[index];
|
|
65
|
-
if (mut_bucket === undefined) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
this.#mut_propagationOrder = Array.from({ length: Math.max(descendants.length, index + 1) }, (_, i) => (i === index ? new Set([child]) : descendants[i]));
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
mut_bucket.add(child);
|
|
72
|
-
}
|
|
73
|
-
if (!this.#mut_isPropagating) {
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
this.#mut_joinedDuringUpdate ??= new Set();
|
|
77
|
-
this.#mut_joinedDuringUpdate.add(child);
|
|
78
|
-
}
|
|
79
|
-
deleteDescendant(child) {
|
|
80
|
-
|
|
81
|
-
this.#mut_propagationOrder[child.depth - this.depth - 1]?.delete(child);
|
|
82
|
-
}
|
|
11
|
+
export class ManagerObservableClass extends ObservableBaseClass {
|
|
83
12
|
|
|
84
13
|
startUpdate(nextValue) {
|
|
85
|
-
const updateToken =
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const wasPropagating = this.#mut_isPropagating;
|
|
89
|
-
const joinedBefore = this.#mut_joinedDuringUpdate;
|
|
90
|
-
this.#mut_isPropagating = true;
|
|
91
|
-
this.#mut_joinedDuringUpdate = undefined;
|
|
14
|
+
const updateToken = openUpdate(this.depth);
|
|
92
15
|
beginPropagation(updateToken);
|
|
93
16
|
|
|
94
17
|
|
|
@@ -96,19 +19,10 @@ export class ManagerObservableClass extends ObservableBaseClass {
|
|
|
96
19
|
|
|
97
20
|
try {
|
|
98
21
|
this.setNext(nextValue, updateToken);
|
|
99
|
-
|
|
22
|
+
drainUpdate(updateToken);
|
|
100
23
|
}
|
|
101
24
|
finally {
|
|
102
|
-
|
|
103
|
-
const joinedNow = this.#mut_joinedDuringUpdate;
|
|
104
|
-
this.#mut_isPropagating = wasPropagating;
|
|
105
|
-
this.#mut_joinedDuringUpdate = joinedBefore;
|
|
106
|
-
if (wasPropagating && joinedNow !== undefined) {
|
|
107
|
-
this.#mut_joinedDuringUpdate ??= new Set();
|
|
108
|
-
for (const c of joinedNow) {
|
|
109
|
-
this.#mut_joinedDuringUpdate.add(c);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
25
|
+
closeUpdate(updateToken);
|
|
112
26
|
endPropagation();
|
|
113
27
|
}
|
|
114
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager-observable-class.mjs","sourceRoot":"","sources":["../../../src/core/class/manager-observable-class.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manager-observable-class.mjs","sourceRoot":"","sources":["../../../src/core/class/manager-observable-class.mts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,cAAc,EACd,UAAU,GACX,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;GAOG;AACH,MAAM,OAAO,sBAIX,SAAQ,mBAAmC;IAC3C,8DAA8D;IACpD,WAAW,CAAC,SAAY;QAChC,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE3C,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAE9B,uEAAuE;QACvE,yEAAyE;QACzE,mEAAmE;QACnE,uCAAuC;QACvC,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAErC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC3B,CAAC;gBAAS,CAAC;YACT,WAAW,CAAC,WAAW,CAAC,CAAC;YAEzB,cAAc,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -41,9 +41,16 @@ export declare class ObservableBaseClass<A, Kind extends ObservableKind, Depth e
|
|
|
41
41
|
get hasSubscriber(): boolean;
|
|
42
42
|
get hasChild(): boolean;
|
|
43
43
|
hasActiveChild(): boolean;
|
|
44
|
+
get queuedFor(): UpdateToken | undefined;
|
|
45
|
+
setQueuedFor(updateToken: UpdateToken): void;
|
|
44
46
|
addChild(child: ChildNode): void;
|
|
45
47
|
deleteChild(child: ChildNode): void;
|
|
46
|
-
/**
|
|
48
|
+
/**
|
|
49
|
+
* Stores `nextValue` as the current value, queues the children for the
|
|
50
|
+
* update `updateToken`, and notifies subscribers. The children are queued
|
|
51
|
+
* first, so that a child a subscriber creates, which starts from this
|
|
52
|
+
* value, is not visited for it again.
|
|
53
|
+
*/
|
|
47
54
|
protected setNext(nextValue: A, updateToken: UpdateToken): void;
|
|
48
55
|
/**
|
|
49
56
|
* Called with the token of every update that reaches this observable; a
|
|
@@ -82,7 +89,7 @@ export declare class ObservableBaseClass<A, Kind extends ObservableKind, Depth e
|
|
|
82
89
|
* subscribers hear of it.
|
|
83
90
|
*/
|
|
84
91
|
protected teardown(): void;
|
|
85
|
-
/** Takes a completed child out of its parents'
|
|
92
|
+
/** Takes a completed child out of its parents' lists. */
|
|
86
93
|
protected detach(): void;
|
|
87
94
|
/**
|
|
88
95
|
* Joins the scope whose `run` is executing (`createScope`), if any. A node
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observable-base-class.d.mts","sourceRoot":"","sources":["../../../src/core/class/observable-base-class.mts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,UAAU,EACV,cAAc,EACd,cAAc,EAGd,YAAY,EACZ,WAAW,EACX,wBAAwB,EACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,eAAe,EAGhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"observable-base-class.d.mts","sourceRoot":"","sources":["../../../src/core/class/observable-base-class.mts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,UAAU,EACV,cAAc,EACd,cAAc,EAGd,YAAY,EACZ,WAAW,EACX,wBAAwB,EACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,eAAe,EAGhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGvD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,mBAAmB,CAC9B,CAAC,EACD,IAAI,SAAS,cAAc,EAC3B,KAAK,SAAS,MAAM,CACpB,YAAW,cAAc,CAAC,CAAC,CAAC;;IAQ5B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,SAAiB,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;IAEzC,YAAY,EACV,IAAI,EACJ,KAAK,EACL,YAAY,GACb,EAAE,QAAQ,CAAC;QACV,IAAI,EAAE,IAAI,CAAC;QACX,KAAK,EAAE,KAAK,CAAC;QACb,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC3B,CAAC,EAoBD;IAED,WAAW,IAAI,QAAQ,CAAC,CAAC,CAAC,CAEzB;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED,IAAI,aAAa,IAAI,OAAO,CAI3B;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,cAAc,IAAI,OAAO,CAUxB;IAED,IAAI,SAAS,IAAI,WAAW,GAAG,SAAS,CAEvC;IAED,YAAY,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAE3C;IAED,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAQ/B;IAED,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAElC;IAED;;;;;OAKG;IACH,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI,CAc9D;IAED;;;;;;OAMG;IAEH,SAAS,CAAC,YAAY,EAAE,WAAW,GAAG,IAAI,CAEzC;IAED;;;;OAIG;IAEH,WAAW,IAAI,IAAI,CAAG;IAEtB;;;;;OAKG;IACH,QAAQ,IAAI,IAAI,CAQf;IAED;;;OAGG;IACH,OAAO,IAAI,IAAI,CAkCd;IAED;;;OAGG;IAEH,SAAS,CAAC,KAAK,IAAI,IAAI,CAAG;IAE1B;;;;OAIG;IAEH,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAG;IAE7B,yDAAyD;IAEzD,SAAS,CAAC,MAAM,IAAI,IAAI,CAAG;IAE3B;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI,CAUtC;IAKD,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAE5E,IAAI,CAAC,CAAC,EACJ,QAAQ,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,GACxE,UAAU,CAAC,CAAC,CAAC,CAAC;IAUjB,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,YAAY,CAuBvE;CACF"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import { Optional } from 'ts-data-forge';
|
|
9
9
|
import { unreachable } from 'ts-std-forge';
|
|
10
10
|
import { getCurrentScopeInternals, notUpdatedYet, observableBrand, toSubscriber, } from '../utils/index.mjs';
|
|
11
|
+
import { enqueueChildren } from './propagation-state.mjs';
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
|
|
@@ -38,6 +39,7 @@ export class ObservableBaseClass {
|
|
|
38
39
|
#mut_children;
|
|
39
40
|
#mut_subscribers;
|
|
40
41
|
#mut_scope;
|
|
42
|
+
#mut_queuedFor;
|
|
41
43
|
kind;
|
|
42
44
|
depth;
|
|
43
45
|
constructor({ kind, depth, initialValue, }) {
|
|
@@ -46,6 +48,7 @@ export class ObservableBaseClass {
|
|
|
46
48
|
this.#mut_snapshot = initialValue;
|
|
47
49
|
this.#mut_isCompleted = false;
|
|
48
50
|
this.#mut_updateToken = notUpdatedYet;
|
|
51
|
+
this.#mut_queuedFor = undefined;
|
|
49
52
|
this.#mut_children = undefined;
|
|
50
53
|
this.#mut_subscribers = undefined;
|
|
51
54
|
this.#mut_scope = undefined;
|
|
@@ -76,6 +79,12 @@ export class ObservableBaseClass {
|
|
|
76
79
|
}
|
|
77
80
|
return false;
|
|
78
81
|
}
|
|
82
|
+
get queuedFor() {
|
|
83
|
+
return this.#mut_queuedFor;
|
|
84
|
+
}
|
|
85
|
+
setQueuedFor(updateToken) {
|
|
86
|
+
this.#mut_queuedFor = updateToken;
|
|
87
|
+
}
|
|
79
88
|
addChild(child) {
|
|
80
89
|
|
|
81
90
|
|
|
@@ -90,9 +99,17 @@ export class ObservableBaseClass {
|
|
|
90
99
|
this.#mut_children?.delete(child);
|
|
91
100
|
}
|
|
92
101
|
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
93
107
|
setNext(nextValue, updateToken) {
|
|
94
108
|
this.#mut_updateToken = updateToken;
|
|
95
109
|
this.#mut_snapshot = Optional.some(nextValue);
|
|
110
|
+
if (this.#mut_children !== undefined) {
|
|
111
|
+
enqueueChildren(this.#mut_children, updateToken);
|
|
112
|
+
}
|
|
96
113
|
if (this.#mut_subscribers !== undefined) {
|
|
97
114
|
for (const s of this.#mut_subscribers) {
|
|
98
115
|
s.onNext(nextValue);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observable-base-class.mjs","sourceRoot":"","sources":["../../../src/core/class/observable-base-class.mts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,yDAAyD;AACzD,4EAA4E;AAC5E,2CAA2C;AAC3C,gDAAgD;AAChD,0DAA0D;AAC1D,kEAAkE;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAe3C,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,eAAe,EACf,YAAY,GAEb,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"observable-base-class.mjs","sourceRoot":"","sources":["../../../src/core/class/observable-base-class.mts"],"names":[],"mappings":"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"}
|
|
@@ -14,21 +14,17 @@ type NodeInternals = Readonly<{
|
|
|
14
14
|
addChild: (child: ChildNode) => void;
|
|
15
15
|
deleteChild: (child: ChildNode) => void;
|
|
16
16
|
/**
|
|
17
|
-
* The
|
|
18
|
-
*
|
|
19
|
-
* has one. Cached so that creating a child does not walk its ancestors.
|
|
17
|
+
* The last update that queued this node (`propagation-state.mts`). Left in
|
|
18
|
+
* place after the visit: the next update has another token.
|
|
20
19
|
*/
|
|
21
|
-
|
|
20
|
+
queuedFor: UpdateToken | undefined;
|
|
21
|
+
setQueuedFor: (updateToken: UpdateToken) => void;
|
|
22
22
|
}>;
|
|
23
23
|
/** An observable, as the other nodes of the graph see it. */
|
|
24
24
|
export type ObservableNode<A = unknown> = NodeInternals & Observable<A>;
|
|
25
25
|
export type ChildNode = NodeInternals & ObservableBase<unknown> & Readonly<{
|
|
26
26
|
parents: readonly Observable<unknown>[];
|
|
27
27
|
}>;
|
|
28
|
-
export type ManagerNode = NodeInternals & ObservableBase<unknown> & Readonly<{
|
|
29
|
-
addDescendant: (child: ChildNode) => void;
|
|
30
|
-
deleteDescendant: (child: ChildNode) => void;
|
|
31
|
-
}>;
|
|
32
28
|
/**
|
|
33
29
|
* The one place a public observable is seen as the node it is. Every
|
|
34
30
|
* observable is built by a synstate class, and the public types carry a
|