synstate 3.2.1 → 3.4.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 +2 -2
- package/dist/core/base/create-child-observable.d.mts +9 -2
- package/dist/core/base/create-child-observable.d.mts.map +1 -1
- package/dist/core/base/create-child-observable.mjs +49 -11
- package/dist/core/base/create-child-observable.mjs.map +1 -1
- package/dist/core/base/create-observable-base.d.mts +5 -1
- package/dist/core/base/create-observable-base.d.mts.map +1 -1
- package/dist/core/base/create-observable-base.mjs +24 -4
- package/dist/core/base/create-observable-base.mjs.map +1 -1
- package/dist/core/base/create-root-observable.d.mts +9 -0
- package/dist/core/base/create-root-observable.d.mts.map +1 -1
- package/dist/core/base/create-root-observable.mjs +32 -3
- package/dist/core/base/create-root-observable.mjs.map +1 -1
- package/dist/core/combine/merge.d.mts +0 -3
- package/dist/core/combine/merge.d.mts.map +1 -1
- package/dist/core/combine/merge.mjs +0 -3
- package/dist/core/combine/merge.mjs.map +1 -1
- package/dist/core/combine/zip.d.mts +4 -2
- package/dist/core/combine/zip.d.mts.map +1 -1
- package/dist/core/combine/zip.mjs +21 -3
- package/dist/core/combine/zip.mjs.map +1 -1
- package/dist/core/create/counter.d.mts +9 -3
- package/dist/core/create/counter.d.mts.map +1 -1
- package/dist/core/create/counter.mjs +16 -3
- package/dist/core/create/counter.mjs.map +1 -1
- package/dist/core/create/from-subscribable.d.mts.map +1 -1
- package/dist/core/create/from-subscribable.mjs +34 -11
- package/dist/core/create/from-subscribable.mjs.map +1 -1
- package/dist/core/create/source.d.mts +7 -0
- package/dist/core/create/source.d.mts.map +1 -1
- package/dist/core/create/source.mjs +6 -2
- package/dist/core/create/source.mjs.map +1 -1
- package/dist/core/operators/merge-map.d.mts +0 -3
- package/dist/core/operators/merge-map.d.mts.map +1 -1
- package/dist/core/operators/merge-map.mjs +0 -3
- package/dist/core/operators/merge-map.mjs.map +1 -1
- package/dist/core/operators/skip-until.d.mts.map +1 -1
- package/dist/core/operators/skip-until.mjs +15 -6
- package/dist/core/operators/skip-until.mjs.map +1 -1
- package/dist/core/operators/switch-map.d.mts +0 -3
- package/dist/core/operators/switch-map.d.mts.map +1 -1
- package/dist/core/operators/switch-map.mjs +0 -3
- package/dist/core/operators/switch-map.mjs.map +1 -1
- package/dist/core/operators/take-until.d.mts.map +1 -1
- package/dist/core/operators/take-until.mjs +13 -1
- package/dist/core/operators/take-until.mjs.map +1 -1
- package/dist/core/operators/with-buffered-from.d.mts.map +1 -1
- package/dist/core/operators/with-buffered-from.mjs +12 -3
- package/dist/core/operators/with-buffered-from.mjs.map +1 -1
- package/dist/core/types/observable-family.d.mts +5 -1
- package/dist/core/types/observable-family.d.mts.map +1 -1
- package/dist/core/types/observable-family.mjs.map +1 -1
- package/dist/core/types/observable.d.mts +17 -0
- package/dist/core/types/observable.d.mts.map +1 -1
- package/dist/core/types/observable.mjs.map +1 -1
- package/dist/utils/create-event-emitter.d.mts +2 -2
- package/dist/utils/create-reducer.d.mts +10 -1
- package/dist/utils/create-reducer.d.mts.map +1 -1
- package/dist/utils/create-reducer.mjs +13 -5
- package/dist/utils/create-reducer.mjs.map +1 -1
- package/dist/utils/create-state.d.mts +7 -0
- package/dist/utils/create-state.d.mts.map +1 -1
- package/dist/utils/create-state.mjs +7 -0
- package/dist/utils/create-state.mjs.map +1 -1
- package/package.json +4 -4
- package/src/core/base/create-child-observable.mts +68 -10
- package/src/core/base/create-observable-base.mts +31 -3
- package/src/core/base/create-root-observable.mts +43 -2
- package/src/core/base/write-during-propagation.test.mts +234 -0
- package/src/core/combine/merge.mts +0 -3
- package/src/core/combine/zip.mts +36 -5
- package/src/core/create/counter.mts +27 -6
- package/src/core/create/counter.test.mts +82 -0
- package/src/core/create/from-subscribable.mts +33 -5
- package/src/core/create/from-subscribable.test.mts +129 -0
- package/src/core/create/source.mts +18 -3
- package/src/core/create/source.test.mts +41 -0
- package/src/core/operators/merge-map.mts +0 -3
- package/src/core/operators/skip-until.mts +21 -9
- package/src/core/operators/switch-map.mts +0 -3
- package/src/core/operators/take-until-skip-until-teardown.test.mts +127 -0
- package/src/core/operators/take-until.mts +15 -1
- package/src/core/operators/with-buffered-from.mts +15 -3
- package/src/core/operators/with-buffered-from.test.mts +56 -0
- package/src/core/types/observable-family.mts +5 -1
- package/src/core/types/observable.mts +19 -0
- package/src/utils/create-event-emitter.mts +2 -2
- package/src/utils/create-reducer.mts +14 -8
- package/src/utils/create-reducer.test.mts +12 -0
- package/src/utils/create-state.mts +7 -0
- package/src/utils/create-state.test.mts +20 -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 -->~
|
|
27
|
+
- 🚀 **Lightweight**: <!-- bundle-size:synstate -->~5.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
|
|
@@ -664,7 +664,7 @@ For complex scenarios, SynState provides observable-based APIs:
|
|
|
664
664
|
- `source<T>()`: Create a new observable source (Almost equivalent to RxJS `subject`)
|
|
665
665
|
- `fromPromise(promise)`: Create observable from promise
|
|
666
666
|
- `fromSubscribable()`: Create observable from any subscribable object
|
|
667
|
-
- `counter(ms)`: Emit 0 at once, then 1, 2, … at intervals (Almost equivalent to RxJS `timer(0, ms)`; `counter(ms, { emitInitial: false })` is almost equivalent to `interval(ms)`)
|
|
667
|
+
- `counter(ms)`: Emit 0 at once, then 1, 2, … at intervals (Almost equivalent to RxJS `timer(0, ms)`; `counter(ms, { emitInitial: false })` is almost equivalent to `interval(ms)`; `{ times: n }` completes it after `n` values)
|
|
668
668
|
- `timer(delay)`: Emit after delay
|
|
669
669
|
|
|
670
670
|
#### Operators
|
|
@@ -29,6 +29,13 @@ type ChildObservableConfigBase<P extends NonEmptyUnknownList> = Readonly<{
|
|
|
29
29
|
* `override complete() { teardown(); super.complete(); }`.
|
|
30
30
|
*/
|
|
31
31
|
onComplete?: () => void;
|
|
32
|
+
/**
|
|
33
|
+
* Whether this observable can emit nothing more although some parent is
|
|
34
|
+
* still live, asked whenever a parent completes. `true` completes it then,
|
|
35
|
+
* as all parents completing does (`zip` once a completed source's queue is
|
|
36
|
+
* empty).
|
|
37
|
+
*/
|
|
38
|
+
canEmitNoMore?: () => boolean;
|
|
32
39
|
}>;
|
|
33
40
|
export type ChildObservableConfig<A, P extends NonEmptyUnknownList> = ChildObservableConfigBase<P> & Readonly<{
|
|
34
41
|
initialValue: Optional<A>;
|
|
@@ -46,7 +53,7 @@ export type InitializedChildObservableConfig<A, P extends NonEmptyUnknownList> =
|
|
|
46
53
|
* state can live either in the enclosing factory scope or inside the
|
|
47
54
|
* `createTryUpdate` closure.
|
|
48
55
|
*/
|
|
49
|
-
export declare const createSyncChildObservable: <A, P extends NonEmptyUnknownList>({ parents, depth, initialValue, onComplete, }: ChildObservableConfig<A, P>, createTryUpdate: (tools: SyncChildObservableTools<A>) => (updateToken: UpdateToken) => void) => SyncChildObservable<A, P>;
|
|
56
|
+
export declare const createSyncChildObservable: <A, P extends NonEmptyUnknownList>({ parents, depth, initialValue, onComplete, canEmitNoMore, }: ChildObservableConfig<A, P>, createTryUpdate: (tools: SyncChildObservableTools<A>) => (updateToken: UpdateToken) => void) => SyncChildObservable<A, P>;
|
|
50
57
|
/**
|
|
51
58
|
* Creates a sync-child observable that always holds a value.
|
|
52
59
|
*
|
|
@@ -60,6 +67,6 @@ export declare const createInitializedSyncChildObservable: <A, P extends NonEmpt
|
|
|
60
67
|
* `AsyncChildObservableClass`. See {@link createSyncChildObservable} for the
|
|
61
68
|
* `createTryUpdate` contract.
|
|
62
69
|
*/
|
|
63
|
-
export declare const createAsyncChildObservable: <A, P extends NonEmptyUnknownList>({ parents, depth, initialValue, onComplete, }: ChildObservableConfig<A, P>, createTryUpdate: (tools: AsyncChildObservableTools<A>) => (updateToken: UpdateToken) => void) => AsyncChildObservable<A, P>;
|
|
70
|
+
export declare const createAsyncChildObservable: <A, P extends NonEmptyUnknownList>({ parents, depth, initialValue, onComplete, canEmitNoMore, }: ChildObservableConfig<A, P>, createTryUpdate: (tools: AsyncChildObservableTools<A>) => (updateToken: UpdateToken) => void) => AsyncChildObservable<A, P>;
|
|
64
71
|
export {};
|
|
65
72
|
//# sourceMappingURL=create-child-observable.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-child-observable.d.mts","sourceRoot":"","sources":["../../../src/core/base/create-child-observable.mts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,EAGL,KAAK,oBAAoB,EAEzB,KAAK,8BAA8B,EACnC,KAAK,mBAAmB,EAGxB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,IAAI,EACV,MAAM,oBAAoB,CAAC;AAQ5B;;;;GAIG;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;CACtB,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,KAAK,yBAAyB,CAAC,CAAC,SAAS,mBAAmB,IAAI,QAAQ,CAAC;IACvE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"create-child-observable.d.mts","sourceRoot":"","sources":["../../../src/core/base/create-child-observable.mts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,EAGL,KAAK,oBAAoB,EAEzB,KAAK,8BAA8B,EACnC,KAAK,mBAAmB,EAGxB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,IAAI,EACV,MAAM,oBAAoB,CAAC;AAQ5B;;;;GAIG;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;CACtB,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,KAAK,yBAAyB,CAAC,CAAC,SAAS,mBAAmB,IAAI,QAAQ,CAAC;IACvE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IAExB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;CAC/B,CAAC,CAAC;AAEH,MAAM,MAAM,qBAAqB,CAC/B,CAAC,EACD,CAAC,SAAS,mBAAmB,IAC3B,yBAAyB,CAAC,CAAC,CAAC,GAC9B,QAAQ,CAAC;IACP,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;CAC3B,CAAC,CAAC;AAEL,MAAM,MAAM,gCAAgC,CAC1C,CAAC,EACD,CAAC,SAAS,mBAAmB,IAC3B,yBAAyB,CAAC,CAAC,CAAC,GAC9B,QAAQ,CAAC;IACP,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;CACvB,CAAC,CAAC;AAEL;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,GAAI,CAAC,EAAE,CAAC,SAAS,mBAAmB,gEAOrE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,mBACb,CACf,KAAK,EAAE,wBAAwB,CAAC,CAAC,CAAC,KAC/B,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,KACtC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAoF1B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oCAAoC,GAC/C,CAAC,EACD,CAAC,SAAS,mBAAmB,UAErB,gCAAgC,CAAC,CAAC,EAAE,CAAC,CAAC,mBAC7B,CACf,KAAK,EAAE,wBAAwB,CAAC,CAAC,CAAC,KAC/B,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,KACtC,8BAA8B,CAAC,CAAC,EAAE,CAAC,CASrC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,GAAI,CAAC,EAAE,CAAC,SAAS,mBAAmB,gEAOtE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,mBACb,CACf,KAAK,EAAE,yBAAyB,CAAC,CAAC,CAAC,KAChC,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,KACtC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAwF3B,CAAC"}
|
|
@@ -13,11 +13,12 @@ import { assembleObservable, createManagerObservableParts, createObservableBaseH
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
export const createSyncChildObservable = ({ parents, depth = 1 + maxDepth(parents), initialValue, onComplete, }, createTryUpdate) => {
|
|
16
|
+
export const createSyncChildObservable = ({ parents, depth = 1 + maxDepth(parents), initialValue, onComplete, canEmitNoMore, }, createTryUpdate) => {
|
|
17
17
|
const handle = createObservableBaseHandle(initialValue);
|
|
18
18
|
|
|
19
19
|
let mut_self = undefined;
|
|
20
|
-
const
|
|
20
|
+
const autoComplete = onComplete !== undefined || parents.some((p) => p.autoComplete);
|
|
21
|
+
const dispose = () => {
|
|
21
22
|
|
|
22
23
|
|
|
23
24
|
|
|
@@ -29,6 +30,12 @@ export const createSyncChildObservable = ({ parents, depth = 1 + maxDepth(parent
|
|
|
29
30
|
if (mut_self !== undefined) {
|
|
30
31
|
unregisterChild(mut_self, parents);
|
|
31
32
|
}
|
|
33
|
+
};
|
|
34
|
+
const complete = () => {
|
|
35
|
+
if (handle.isCompleted()) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
dispose();
|
|
32
39
|
|
|
33
40
|
for (const par of parents) {
|
|
34
41
|
par.tryComplete();
|
|
@@ -39,8 +46,10 @@ export const createSyncChildObservable = ({ parents, depth = 1 + maxDepth(parent
|
|
|
39
46
|
return;
|
|
40
47
|
}
|
|
41
48
|
tryCompleteChild({
|
|
49
|
+
canEmitNoMore,
|
|
42
50
|
hasSubscriber: handle.hasSubscriber(),
|
|
43
51
|
hasActiveChild: handle.hasActiveChild(),
|
|
52
|
+
autoComplete,
|
|
44
53
|
parents,
|
|
45
54
|
complete,
|
|
46
55
|
});
|
|
@@ -57,10 +66,20 @@ export const createSyncChildObservable = ({ parents, depth = 1 + maxDepth(parent
|
|
|
57
66
|
tryUpdate,
|
|
58
67
|
tryComplete,
|
|
59
68
|
complete,
|
|
69
|
+
dispose,
|
|
70
|
+
autoComplete,
|
|
60
71
|
extra: { parents },
|
|
61
72
|
});
|
|
62
|
-
|
|
63
|
-
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
if (parents.every((p) => p.isCompleted)) {
|
|
77
|
+
dispose();
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
registerChild(observable, parents);
|
|
81
|
+
mut_self = observable;
|
|
82
|
+
}
|
|
64
83
|
return observable;
|
|
65
84
|
};
|
|
66
85
|
|
|
@@ -83,12 +102,13 @@ export const createInitializedSyncChildObservable = (config, createTryUpdate) =>
|
|
|
83
102
|
|
|
84
103
|
|
|
85
104
|
|
|
86
|
-
export const createAsyncChildObservable = ({ parents, depth = 1 + maxDepth(parents), initialValue, onComplete, }, createTryUpdate) => {
|
|
105
|
+
export const createAsyncChildObservable = ({ parents, depth = 1 + maxDepth(parents), initialValue, onComplete, canEmitNoMore, }, createTryUpdate) => {
|
|
87
106
|
const handle = createObservableBaseHandle(initialValue);
|
|
88
107
|
const { addDescendant, deleteDescendant, startUpdate } = createManagerObservableParts(handle);
|
|
89
108
|
|
|
90
109
|
let mut_self = undefined;
|
|
91
|
-
const
|
|
110
|
+
const autoComplete = onComplete !== undefined || parents.some((p) => p.autoComplete);
|
|
111
|
+
const dispose = () => {
|
|
92
112
|
|
|
93
113
|
|
|
94
114
|
|
|
@@ -100,6 +120,12 @@ export const createAsyncChildObservable = ({ parents, depth = 1 + maxDepth(paren
|
|
|
100
120
|
if (mut_self !== undefined) {
|
|
101
121
|
unregisterChild(mut_self, parents);
|
|
102
122
|
}
|
|
123
|
+
};
|
|
124
|
+
const complete = () => {
|
|
125
|
+
if (handle.isCompleted()) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
dispose();
|
|
103
129
|
|
|
104
130
|
for (const par of parents) {
|
|
105
131
|
par.tryComplete();
|
|
@@ -110,8 +136,10 @@ export const createAsyncChildObservable = ({ parents, depth = 1 + maxDepth(paren
|
|
|
110
136
|
return;
|
|
111
137
|
}
|
|
112
138
|
tryCompleteChild({
|
|
139
|
+
canEmitNoMore,
|
|
113
140
|
hasSubscriber: handle.hasSubscriber(),
|
|
114
141
|
hasActiveChild: handle.hasActiveChild(),
|
|
142
|
+
autoComplete,
|
|
115
143
|
parents,
|
|
116
144
|
complete,
|
|
117
145
|
});
|
|
@@ -129,10 +157,20 @@ export const createAsyncChildObservable = ({ parents, depth = 1 + maxDepth(paren
|
|
|
129
157
|
tryUpdate,
|
|
130
158
|
tryComplete,
|
|
131
159
|
complete,
|
|
160
|
+
dispose,
|
|
161
|
+
autoComplete,
|
|
132
162
|
extra: { parents, addDescendant, deleteDescendant },
|
|
133
163
|
});
|
|
134
|
-
|
|
135
|
-
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
if (parents.every((p) => p.isCompleted)) {
|
|
168
|
+
dispose();
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
registerChild(observable, parents);
|
|
172
|
+
mut_self = observable;
|
|
173
|
+
}
|
|
136
174
|
return observable;
|
|
137
175
|
};
|
|
138
176
|
|
|
@@ -229,14 +267,14 @@ const unregisterChild = (child, parents) => {
|
|
|
229
267
|
}
|
|
230
268
|
}
|
|
231
269
|
};
|
|
232
|
-
const tryCompleteChild = ({ hasSubscriber, hasActiveChild, parents, complete, }) => {
|
|
270
|
+
const tryCompleteChild = ({ canEmitNoMore, hasSubscriber, hasActiveChild, autoComplete, parents, complete, }) => {
|
|
233
271
|
|
|
234
|
-
if (parents.every((r) => r.isCompleted)) {
|
|
272
|
+
if (parents.every((r) => r.isCompleted) || canEmitNoMore?.() === true) {
|
|
235
273
|
complete();
|
|
236
274
|
return;
|
|
237
275
|
}
|
|
238
276
|
|
|
239
|
-
if (!hasSubscriber && !hasActiveChild) {
|
|
277
|
+
if (autoComplete && !hasSubscriber && !hasActiveChild) {
|
|
240
278
|
complete();
|
|
241
279
|
}
|
|
242
280
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-child-observable.mjs","sourceRoot":"","sources":["../../../src/core/base/create-child-observable.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAA4B,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GAUpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"create-child-observable.mjs","sourceRoot":"","sources":["../../../src/core/base/create-child-observable.mts"],"names":[],"mappings":"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"}
|
|
@@ -82,6 +82,8 @@ type ObservableStateWriters = Readonly<{
|
|
|
82
82
|
setHasChild: (value: boolean) => void;
|
|
83
83
|
}>;
|
|
84
84
|
export declare const createObservableBaseHandle: <A>(initialValue: Optional<A>) => ObservableBaseHandle<A>;
|
|
85
|
+
/** Whether some observable's update is propagating right now. */
|
|
86
|
+
export declare const isPropagating: () => boolean;
|
|
85
87
|
/**
|
|
86
88
|
* The extra members every manager observable — a root or an async child — owns:
|
|
87
89
|
* the depth-ordered descendant list and the update propagation that walks it.
|
|
@@ -120,6 +122,8 @@ type AssembleObservableArgs<A, Kind extends ObservableKind, Extra extends Readon
|
|
|
120
122
|
tryUpdate: (updateToken: UpdateToken) => void;
|
|
121
123
|
tryComplete: () => void;
|
|
122
124
|
complete: () => void;
|
|
125
|
+
dispose: () => void;
|
|
126
|
+
autoComplete: boolean;
|
|
123
127
|
/**
|
|
124
128
|
* Kind-specific public members (`parents`, `addDescendant`) and leaf
|
|
125
129
|
* extensions (`next`, `start`). They are merged here, in the one place the
|
|
@@ -137,7 +141,7 @@ type AssembleObservableArgs<A, Kind extends ObservableKind, Extra extends Readon
|
|
|
137
141
|
* behavior (`tryUpdate`, `tryComplete`, `complete`) is passed in already
|
|
138
142
|
* composed.
|
|
139
143
|
*/
|
|
140
|
-
export declare const assembleObservable: <A, Kind extends ObservableKind, Extra extends ReadonlyRecord<string, unknown>>({ kind, depth, handle, tryUpdate, tryComplete, complete, extra, }: AssembleObservableArgs<A, Kind, Extra>) => Extra & ObservableBase<A> & Readonly<{
|
|
144
|
+
export declare const assembleObservable: <A, Kind extends ObservableKind, Extra extends ReadonlyRecord<string, unknown>>({ kind, depth, handle, tryUpdate, tryComplete, complete, dispose, autoComplete, extra, }: AssembleObservableArgs<A, Kind, Extra>) => Extra & ObservableBase<A> & Readonly<{
|
|
141
145
|
kind: Kind;
|
|
142
146
|
depth: AssembleObservableArgs<A, Kind, Extra>['depth'];
|
|
143
147
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-observable-base.d.mts","sourceRoot":"","sources":["../../../src/core/base/create-observable-base.mts"],"names":[],"mappings":"AAAA,OAAO,EAAO,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAA0B,cAAc,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,KAAK,EACV,eAAe,EAGf,cAAc,EACd,YAAY,EACZ,cAAc,EAId,YAAY,EACZ,WAAW,EAEZ,MAAM,oBAAoB,CAAC;AAS5B;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI,QAAQ,CAAC;IAC7C,EAAE,EAAE,YAAY,CAAC;IAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,MAAM,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAElD,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAEjD;;;OAGG;IACH,WAAW,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAEpD,WAAW,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE/B,WAAW,EAAE,MAAM,OAAO,CAAC;IAE3B,WAAW,EAAE,MAAM,WAAW,CAAC;IAE/B,aAAa,EAAE,MAAM,OAAO,CAAC;IAE7B,cAAc,EAAE,MAAM,OAAO,CAAC;IAE9B,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,IAAI,KAAK,YAAY,CAAC;IAE7E,wEAAwE;IACxE,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;IAE1D;;;;;OAKG;IACH,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,KAAK,sBAAsB,GAAG,QAAQ,CAAC;IACrC,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,cAAc,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7C,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC,CAAC,CAAC;AAEH,eAAO,MAAM,0BAA0B,GAAI,CAAC,gBAC5B,QAAQ,CAAC,CAAC,CAAC,KACxB,oBAAoB,CAAC,CAAC,CAqKxB,CAAC;
|
|
1
|
+
{"version":3,"file":"create-observable-base.d.mts","sourceRoot":"","sources":["../../../src/core/base/create-observable-base.mts"],"names":[],"mappings":"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"}
|
|
@@ -122,6 +122,14 @@ export const createObservableBaseHandle = (initialValue) => {
|
|
|
122
122
|
|
|
123
123
|
|
|
124
124
|
|
|
125
|
+
const mut_propagation = { depth: 0 };
|
|
126
|
+
|
|
127
|
+
export const isPropagating = () => mut_propagation.depth > 0;
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
125
133
|
|
|
126
134
|
|
|
127
135
|
|
|
@@ -178,9 +186,19 @@ export const createManagerObservableParts = (handle) => {
|
|
|
178
186
|
};
|
|
179
187
|
const startUpdate = (nextValue) => {
|
|
180
188
|
const updateToken = issueUpdateToken();
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
189
|
+
mut_propagation.depth += 1;
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
try {
|
|
195
|
+
handle.setNext(nextValue, updateToken);
|
|
196
|
+
for (const p of getPropagationOrder()) {
|
|
197
|
+
p.tryUpdate(updateToken);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
finally {
|
|
201
|
+
mut_propagation.depth -= 1;
|
|
184
202
|
}
|
|
185
203
|
};
|
|
186
204
|
return { addDescendant, deleteDescendant, startUpdate };
|
|
@@ -204,7 +222,7 @@ const tryUpdateNotImplemented = (_updateToken) => {
|
|
|
204
222
|
|
|
205
223
|
|
|
206
224
|
|
|
207
|
-
export const assembleObservable = ({ kind, depth, handle, tryUpdate, tryComplete, complete, extra, }) => {
|
|
225
|
+
export const assembleObservable = ({ kind, depth, handle, tryUpdate, tryComplete, complete, dispose, autoComplete, extra, }) => {
|
|
208
226
|
function pipe(operator) {
|
|
209
227
|
return operator(
|
|
210
228
|
|
|
@@ -228,9 +246,11 @@ export const assembleObservable = ({ kind, depth, handle, tryUpdate, tryComplete
|
|
|
228
246
|
hasSubscriber: false,
|
|
229
247
|
hasChild: false,
|
|
230
248
|
hasActiveChild: handle.hasActiveChild,
|
|
249
|
+
autoComplete,
|
|
231
250
|
tryUpdate,
|
|
232
251
|
tryComplete,
|
|
233
252
|
complete,
|
|
253
|
+
dispose,
|
|
234
254
|
subscribe: handle.subscribe,
|
|
235
255
|
pipe,
|
|
236
256
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-observable-base.mjs","sourceRoot":"","sources":["../../../src/core/base/create-observable-base.mts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"create-observable-base.mjs","sourceRoot":"","sources":["../../../src/core/base/create-observable-base.mts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import { type RootObservable } from '../types/index.mjs';
|
|
|
9
9
|
export type RootObservableTools<A> = Readonly<{
|
|
10
10
|
/** Emits `nextValue` and propagates the update to all descendants. */
|
|
11
11
|
startUpdate: (nextValue: A) => void;
|
|
12
|
+
getSnapshot: () => Optional<A>;
|
|
12
13
|
isCompleted: () => boolean;
|
|
13
14
|
/** Completes this observable (leaf teardown included). */
|
|
14
15
|
complete: () => void;
|
|
@@ -34,4 +35,12 @@ export type RootObservableConfig<A> = Readonly<{
|
|
|
34
35
|
* point.
|
|
35
36
|
*/
|
|
36
37
|
export declare const createRootObservable: <A, Extension extends ReadonlyRecord<string, unknown> = ReadonlyRecord<never, never>>({ initialValue, onComplete }: RootObservableConfig<A>, init: (tools: RootObservableTools<A>) => Extension) => Extension & RootObservable<A>;
|
|
38
|
+
/**
|
|
39
|
+
* Shown once per root observable, the first time it is written to (`next`,
|
|
40
|
+
* `setState`, `dispatch`, …) while another update is still propagating —
|
|
41
|
+
* from a subscriber or a projection. The write still propagates immediately,
|
|
42
|
+
* as it always has; the warning is there because the pattern is wrong, not
|
|
43
|
+
* because anything was refused.
|
|
44
|
+
*/
|
|
45
|
+
export declare const writeDuringPropagationWarning = "synstate: an observable was written to (next / setState / dispatch) while an update was propagating, so subscribers can see intermediate states. Derive the value with map / combine instead of writing from a subscriber or a projection.";
|
|
37
46
|
//# sourceMappingURL=create-root-observable.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-root-observable.d.mts","sourceRoot":"","sources":["../../../src/core/base/create-root-observable.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"create-root-observable.d.mts","sourceRoot":"","sources":["../../../src/core/base/create-root-observable.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAS3E;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,QAAQ,CAAC;IAC5C,sEAAsE;IACtE,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,IAAI,CAAC;IAEpC,WAAW,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE/B,WAAW,EAAE,MAAM,OAAO,CAAC;IAE3B,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC,CAAC;AAEH,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI,QAAQ,CAAC;IAC7C,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE1B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC,CAAC;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAC/B,CAAC,EAGD,SAAS,SAAS,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,CAChE,KAAK,EACL,KAAK,CACN,gCAE6B,oBAAoB,CAAC,CAAC,CAAC,QAC/C,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,SAAS,KACjD,SAAS,GAAG,cAAc,CAAC,CAAC,CAiE9B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,+OACoM,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
import { assembleObservable, createManagerObservableParts, createObservableBaseHandle, createTryUpdateNotImplemented, } from './create-observable-base.mjs';
|
|
3
|
+
import { assembleObservable, createManagerObservableParts, createObservableBaseHandle, createTryUpdateNotImplemented, isPropagating, } from './create-observable-base.mjs';
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
@@ -19,16 +19,34 @@ export const createRootObservable = ({ initialValue, onComplete }, init) => {
|
|
|
19
19
|
onComplete?.();
|
|
20
20
|
handle.completeBase();
|
|
21
21
|
};
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
const autoComplete = onComplete !== undefined;
|
|
22
25
|
const tryComplete = () => {
|
|
23
|
-
if (!handle.hasSubscriber() && !handle.hasActiveChild()) {
|
|
26
|
+
if (autoComplete && !handle.hasSubscriber() && !handle.hasActiveChild()) {
|
|
24
27
|
complete();
|
|
25
28
|
}
|
|
26
29
|
};
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
let mut_isInitializing = true;
|
|
35
|
+
let mut_hasWarned = false;
|
|
36
|
+
const startUpdateWithWarning = (nextValue) => {
|
|
37
|
+
if (!mut_isInitializing && !mut_hasWarned && isPropagating()) {
|
|
38
|
+
mut_hasWarned = true;
|
|
39
|
+
console.warn(writeDuringPropagationWarning);
|
|
40
|
+
}
|
|
41
|
+
startUpdate(nextValue);
|
|
42
|
+
};
|
|
27
43
|
const extension = init({
|
|
28
|
-
startUpdate,
|
|
44
|
+
startUpdate: startUpdateWithWarning,
|
|
45
|
+
getSnapshot: handle.getSnapshot,
|
|
29
46
|
isCompleted: handle.isCompleted,
|
|
30
47
|
complete,
|
|
31
48
|
});
|
|
49
|
+
mut_isInitializing = false;
|
|
32
50
|
return assembleObservable({
|
|
33
51
|
kind: 'root',
|
|
34
52
|
depth: 0,
|
|
@@ -36,6 +54,9 @@ export const createRootObservable = ({ initialValue, onComplete }, init) => {
|
|
|
36
54
|
tryUpdate: createTryUpdateNotImplemented,
|
|
37
55
|
tryComplete,
|
|
38
56
|
complete,
|
|
57
|
+
|
|
58
|
+
dispose: complete,
|
|
59
|
+
autoComplete,
|
|
39
60
|
extra: {
|
|
40
61
|
...extension,
|
|
41
62
|
addDescendant,
|
|
@@ -48,4 +69,12 @@ export const createRootObservable = ({ initialValue, onComplete }, init) => {
|
|
|
48
69
|
|
|
49
70
|
|
|
50
71
|
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
export const writeDuringPropagationWarning = 'synstate: an observable was written to (next / setState / dispatch) while an update was propagating, so subscribers can see intermediate states. Derive the value with map / combine instead of writing from a subscriber or a projection.';
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
51
80
|
//# sourceMappingURL=create-root-observable.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-root-observable.mjs","sourceRoot":"","sources":["../../../src/core/base/create-root-observable.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAuB,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,0BAA0B,EAC1B,6BAA6B,
|
|
1
|
+
{"version":3,"file":"create-root-observable.mjs","sourceRoot":"","sources":["../../../src/core/base/create-root-observable.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAuB,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,0BAA0B,EAC1B,6BAA6B,EAC7B,aAAa,GACd,MAAM,8BAA8B,CAAC;AA8BtC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CASlC,EAAE,YAAY,EAAE,UAAU,EAA2B,EACrD,IAAkD,EACnB,EAAE;IACjC,MAAM,MAAM,GAAG,0BAA0B,CAAI,YAAY,CAAC,CAAC;IAE3D,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,GACpD,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAEvC,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,UAAU,EAAE,EAAE,CAAC;QAEf,MAAM,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC,CAAC;IAEF,uEAAuE;IACvE,2EAA2E;IAC3E,MAAM,YAAY,GAAG,UAAU,KAAK,SAAS,CAAC;IAE9C,MAAM,WAAW,GAAG,GAAS,EAAE;QAC7B,IAAI,YAAY,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;YACxE,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC,CAAC;IAEF,kEAAkE;IAClE,gEAAgE;IAChE,4EAA4E;IAC5E,oEAAoE;IACpE,IAAI,kBAAkB,GAAG,IAAI,CAAC;IAE9B,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,MAAM,sBAAsB,GAAG,CAAC,SAAY,EAAQ,EAAE;QACpD,IAAI,CAAC,kBAAkB,IAAI,CAAC,aAAa,IAAI,aAAa,EAAE,EAAE,CAAC;YAC7D,aAAa,GAAG,IAAI,CAAC;YAErB,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC9C,CAAC;QAED,WAAW,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAc,IAAI,CAAC;QAChC,WAAW,EAAE,sBAAsB;QACnC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,QAAQ;KACT,CAAC,CAAC;IAEH,kBAAkB,GAAG,KAAK,CAAC;IAE3B,OAAO,kBAAkB,CAAC;QACxB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,CAAC;QACR,MAAM;QACN,SAAS,EAAE,6BAA6B;QACxC,WAAW;QACX,QAAQ;QACR,2CAA2C;QAC3C,OAAO,EAAE,QAAQ;QACjB,YAAY;QACZ,KAAK,EAAE;YACL,GAAG,SAAS;YACZ,aAAa;YACb,gBAAgB;SACjB;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GACxC,4OAA4O,CAAC;AAE/O,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;IACrC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC5B,MAAM,CAAC,MAAM,CACX,gBAAgB,CACd,oBAAoB,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CACrE,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -47,9 +47,6 @@ import type { MergeObservableRefined, Observable } from '../types/index.mjs';
|
|
|
47
47
|
*
|
|
48
48
|
* assert.deepStrictEqual(valueHistory, ['c1', 'k1', 'c2', 'k2']);
|
|
49
49
|
* ```
|
|
50
|
-
*
|
|
51
|
-
* @note To improve code readability, consider using `createState` instead of `merge`,
|
|
52
|
-
* subscribing to `parents` and calling `setState` within it.
|
|
53
50
|
*/
|
|
54
51
|
export declare const merge: <const OS extends NonEmptyTuple<Observable<unknown>>>(parents: OS) => MergeObservableRefined<OS>;
|
|
55
52
|
//# sourceMappingURL=merge.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.mts","sourceRoot":"","sources":["../../../src/core/combine/merge.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,eAAe,CAAC;AAGjE,OAAO,KAAK,EAEV,sBAAsB,EAEtB,UAAU,EAGX,MAAM,oBAAoB,CAAC;AAE5B
|
|
1
|
+
{"version":3,"file":"merge.d.mts","sourceRoot":"","sources":["../../../src/core/combine/merge.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,eAAe,CAAC;AAGjE,OAAO,KAAK,EAEV,sBAAsB,EAEtB,UAAU,EAGX,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,eAAO,MAAM,KAAK,GAAI,KAAK,CAAC,EAAE,SAAS,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,WAC9D,EAAE,KACV,sBAAsB,CAAC,EAAE,CAEkC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.mjs","sourceRoot":"","sources":["../../../src/core/combine/merge.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAU7C
|
|
1
|
+
{"version":3,"file":"merge.mjs","sourceRoot":"","sources":["../../../src/core/combine/merge.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAU7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,OAAW,EACiB,EAAE;AAC9B,4DAA4D;AAC5D,qBAAqB,CAAC,OAAO,CAA+B,CAAC;AAE/D,MAAM,qBAAqB,GAAG,CAC5B,OAAgB,EACI,EAAE,CACtB,yBAAyB,CACvB;IACE,OAAO;IACP,YAAY,EAAE,QAAQ,CAAC,IAAI;CAC5B,EACD,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CACd,CAAC,WAAW,EAAE,EAAE;IACd,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,WAAW,KAAK,WAAW,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CACpE,CAAC;IAEF,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,MAAM,SAAS;IACb,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAoB,CAAC;IAEhE,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAClC,CAAC,CACJ,CAAC;AAEJ,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;IACrC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;QACrB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ;IAC7B,CAAC,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAErB,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAEvB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAE3B,UAAU,CAAkD,IAAI,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -3,7 +3,9 @@ import type { Observable, ZipObservableRefined } from '../types/index.mjs';
|
|
|
3
3
|
/**
|
|
4
4
|
* Combines multiple observables by pairing their emissions by index.
|
|
5
5
|
* Waits for all sources to emit their nth value before emitting the nth tuple.
|
|
6
|
-
* Completes
|
|
6
|
+
* Completes once a completed source has no value left to pair, as RxJS's
|
|
7
|
+
* `zip` does: at once if it completes with nothing queued, otherwise after
|
|
8
|
+
* the tuple that takes its last queued value.
|
|
7
9
|
*
|
|
8
10
|
* @template OS - Tuple type of source observables
|
|
9
11
|
* @param parents - Array of observables to zip
|
|
@@ -20,7 +22,7 @@ import type { Observable, ZipObservableRefined } from '../types/index.mjs';
|
|
|
20
22
|
* // Explanation:
|
|
21
23
|
* // - zip pairs values by their index from multiple sources
|
|
22
24
|
* // - Waits for all sources to emit at the same index
|
|
23
|
-
* // - Completes
|
|
25
|
+
* // - Completes once a completed source has no value left to pair
|
|
24
26
|
*
|
|
25
27
|
* const [letters$, setLetter] = createState<string>('A');
|
|
26
28
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zip.d.mts","sourceRoot":"","sources":["../../../src/core/combine/zip.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAS,MAAM,eAAe,CAAC;AAI1D,OAAO,KAAK,EAIV,UAAU,
|
|
1
|
+
{"version":3,"file":"zip.d.mts","sourceRoot":"","sources":["../../../src/core/combine/zip.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAS,MAAM,eAAe,CAAC;AAI1D,OAAO,KAAK,EAIV,UAAU,EAMV,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,eAAO,MAAM,GAAG,GAAI,KAAK,CAAC,EAAE,SAAS,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,WAC5D,EAAE,KACV,oBAAoB,CAAC,EAAE,CAE2C,CAAC"}
|
|
@@ -48,6 +48,8 @@ import { createSyncChildObservable } from '../base/index.mjs';
|
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
|
|
51
|
+
|
|
52
|
+
|
|
51
53
|
|
|
52
54
|
|
|
53
55
|
|
|
@@ -68,15 +70,28 @@ const createZipObservable = (parents) => {
|
|
|
68
70
|
? Optional.some(Arr.map(parentsValues, (c) => c.value))
|
|
69
71
|
: Optional.none;
|
|
70
72
|
const queues = Arr.map(parents, () => createQueue());
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
const mut_takenTokens = Array.from(parents, (p) => p.updateToken);
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
const canEmitNoMore = () => parents.some((par, index) => par.isCompleted &&
|
|
80
|
+
queues[index]?.isEmpty === true &&
|
|
81
|
+
(par.updateToken === mut_takenTokens[index] ||
|
|
82
|
+
Optional.isNone(par.getSnapshot())));
|
|
71
83
|
return createSyncChildObservable({
|
|
72
84
|
parents,
|
|
73
85
|
initialValue,
|
|
74
|
-
|
|
86
|
+
canEmitNoMore,
|
|
87
|
+
}, ({ setNext, complete }) => (updateToken) => {
|
|
75
88
|
for (const [index, par] of parents.entries()) {
|
|
76
89
|
const sn = par.getSnapshot();
|
|
77
|
-
if (par.updateToken === updateToken && Optional.isSome(sn)) {
|
|
78
|
-
|
|
90
|
+
if (!(par.updateToken === updateToken && Optional.isSome(sn))) {
|
|
91
|
+
continue;
|
|
79
92
|
}
|
|
93
|
+
queues[index]?.enqueue(sn.value);
|
|
94
|
+
mut_takenTokens[index] = updateToken;
|
|
80
95
|
}
|
|
81
96
|
if (queues.some((list) => list.isEmpty)) {
|
|
82
97
|
return;
|
|
@@ -87,6 +102,9 @@ const createZipObservable = (parents) => {
|
|
|
87
102
|
|
|
88
103
|
Arr.map(queues, (q) => Optional.unwrap(q.dequeue()));
|
|
89
104
|
setNext(nextValue, updateToken);
|
|
105
|
+
if (canEmitNoMore()) {
|
|
106
|
+
complete();
|
|
107
|
+
}
|
|
90
108
|
});
|
|
91
109
|
};
|
|
92
110
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zip.mjs","sourceRoot":"","sources":["../../../src/core/combine/zip.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"zip.mjs","sourceRoot":"","sources":["../../../src/core/combine/zip.mts"],"names":[],"mappings":"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"}
|