synstate 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +272 -532
- package/assets/synstate-icon.png +0 -0
- package/dist/core/combine/combine.d.mts +33 -3
- package/dist/core/combine/combine.d.mts.map +1 -1
- package/dist/core/combine/combine.mjs +34 -4
- package/dist/core/combine/combine.mjs.map +1 -1
- package/dist/core/combine/merge.d.mts +30 -4
- package/dist/core/combine/merge.d.mts.map +1 -1
- package/dist/core/combine/merge.mjs +30 -4
- package/dist/core/combine/merge.mjs.map +1 -1
- package/dist/core/combine/zip.d.mts +28 -3
- package/dist/core/combine/zip.d.mts.map +1 -1
- package/dist/core/combine/zip.mjs +28 -3
- package/dist/core/combine/zip.mjs.map +1 -1
- package/dist/core/create/from-array.d.mts +21 -3
- package/dist/core/create/from-array.d.mts.map +1 -1
- package/dist/core/create/from-array.mjs +21 -3
- package/dist/core/create/from-array.mjs.map +1 -1
- package/dist/core/create/from-promise.d.mts +29 -7
- package/dist/core/create/from-promise.d.mts.map +1 -1
- package/dist/core/create/from-promise.mjs +29 -7
- package/dist/core/create/from-promise.mjs.map +1 -1
- package/dist/core/create/from-subscribable.d.mts +58 -0
- package/dist/core/create/from-subscribable.d.mts.map +1 -1
- package/dist/core/create/from-subscribable.mjs +58 -0
- package/dist/core/create/from-subscribable.mjs.map +1 -1
- package/dist/core/create/interval.d.mts +29 -4
- package/dist/core/create/interval.d.mts.map +1 -1
- package/dist/core/create/interval.mjs +29 -4
- package/dist/core/create/interval.mjs.map +1 -1
- package/dist/core/create/of.d.mts +22 -3
- package/dist/core/create/of.d.mts.map +1 -1
- package/dist/core/create/of.mjs +22 -3
- package/dist/core/create/of.mjs.map +1 -1
- package/dist/core/create/source.d.mts +21 -2
- package/dist/core/create/source.d.mts.map +1 -1
- package/dist/core/create/source.mjs +2 -2
- package/dist/core/create/source.mjs.map +1 -1
- package/dist/core/create/timer.d.mts +23 -4
- package/dist/core/create/timer.d.mts.map +1 -1
- package/dist/core/create/timer.mjs +23 -4
- package/dist/core/create/timer.mjs.map +1 -1
- package/dist/core/index.d.mts +1 -0
- package/dist/core/index.d.mts.map +1 -1
- package/dist/core/index.mjs +15 -3
- package/dist/core/index.mjs.map +1 -1
- package/dist/core/operators/audit-time.d.mts +59 -0
- package/dist/core/operators/audit-time.d.mts.map +1 -1
- package/dist/core/operators/audit-time.mjs +59 -0
- package/dist/core/operators/audit-time.mjs.map +1 -1
- package/dist/core/operators/debounce-time.d.mts +22 -2
- package/dist/core/operators/debounce-time.d.mts.map +1 -1
- package/dist/core/operators/debounce-time.mjs +22 -2
- package/dist/core/operators/debounce-time.mjs.map +1 -1
- package/dist/core/operators/filter.d.mts +26 -1
- package/dist/core/operators/filter.d.mts.map +1 -1
- package/dist/core/operators/filter.mjs.map +1 -1
- package/dist/core/operators/index.mjs +3 -3
- package/dist/core/operators/map-with-index.d.mts +19 -17
- package/dist/core/operators/map-with-index.d.mts.map +1 -1
- package/dist/core/operators/map-with-index.mjs +21 -23
- package/dist/core/operators/map-with-index.mjs.map +1 -1
- package/dist/core/operators/merge-map.d.mts +48 -6
- package/dist/core/operators/merge-map.d.mts.map +1 -1
- package/dist/core/operators/merge-map.mjs +48 -6
- package/dist/core/operators/merge-map.mjs.map +1 -1
- package/dist/core/operators/pairwise.d.mts +30 -1
- package/dist/core/operators/pairwise.d.mts.map +1 -1
- package/dist/core/operators/pairwise.mjs +30 -1
- package/dist/core/operators/pairwise.mjs.map +1 -1
- package/dist/core/operators/scan.d.mts +23 -1
- package/dist/core/operators/scan.d.mts.map +1 -1
- package/dist/core/operators/scan.mjs +23 -1
- package/dist/core/operators/scan.mjs.map +1 -1
- package/dist/core/operators/skip-if-no-change.d.mts +26 -2
- package/dist/core/operators/skip-if-no-change.d.mts.map +1 -1
- package/dist/core/operators/skip-if-no-change.mjs +27 -3
- package/dist/core/operators/skip-if-no-change.mjs.map +1 -1
- package/dist/core/operators/skip-until.d.mts +50 -0
- package/dist/core/operators/skip-until.d.mts.map +1 -1
- package/dist/core/operators/skip-until.mjs +50 -0
- package/dist/core/operators/skip-until.mjs.map +1 -1
- package/dist/core/operators/skip-while.d.mts +48 -1
- package/dist/core/operators/skip-while.d.mts.map +1 -1
- package/dist/core/operators/skip-while.mjs +50 -5
- package/dist/core/operators/skip-while.mjs.map +1 -1
- package/dist/core/operators/switch-map.d.mts +39 -5
- package/dist/core/operators/switch-map.d.mts.map +1 -1
- package/dist/core/operators/switch-map.mjs +39 -5
- package/dist/core/operators/switch-map.mjs.map +1 -1
- package/dist/core/operators/take-until.d.mts +20 -1
- package/dist/core/operators/take-until.d.mts.map +1 -1
- package/dist/core/operators/take-until.mjs +20 -1
- package/dist/core/operators/take-until.mjs.map +1 -1
- package/dist/core/operators/take-while.d.mts +47 -1
- package/dist/core/operators/take-while.d.mts.map +1 -1
- package/dist/core/operators/take-while.mjs +48 -3
- package/dist/core/operators/take-while.mjs.map +1 -1
- package/dist/core/operators/throttle-time.d.mts +44 -5
- package/dist/core/operators/throttle-time.d.mts.map +1 -1
- package/dist/core/operators/throttle-time.mjs +44 -5
- package/dist/core/operators/throttle-time.mjs.map +1 -1
- package/dist/core/operators/with-buffered-from.d.mts +57 -0
- package/dist/core/operators/with-buffered-from.d.mts.map +1 -1
- package/dist/core/operators/with-buffered-from.mjs +58 -1
- package/dist/core/operators/with-buffered-from.mjs.map +1 -1
- package/dist/core/operators/with-current-value-from.d.mts +59 -0
- package/dist/core/operators/with-current-value-from.d.mts.map +1 -1
- package/dist/core/operators/with-current-value-from.mjs +60 -1
- package/dist/core/operators/with-current-value-from.mjs.map +1 -1
- package/dist/core/operators/with-initial-value.d.mts +24 -2
- package/dist/core/operators/with-initial-value.d.mts.map +1 -1
- package/dist/core/operators/with-initial-value.mjs +24 -2
- package/dist/core/operators/with-initial-value.mjs.map +1 -1
- package/dist/core/predefined/index.d.mts +2 -0
- package/dist/core/predefined/index.d.mts.map +1 -0
- package/dist/core/predefined/index.mjs +13 -0
- package/dist/core/predefined/index.mjs.map +1 -0
- package/dist/core/predefined/operators/attach-index.d.mts +8 -0
- package/dist/core/predefined/operators/attach-index.d.mts.map +1 -0
- package/dist/core/predefined/operators/attach-index.mjs +13 -0
- package/dist/core/predefined/operators/attach-index.mjs.map +1 -0
- package/dist/core/predefined/operators/index.d.mts +13 -0
- package/dist/core/predefined/operators/index.d.mts.map +1 -0
- package/dist/core/predefined/operators/index.mjs +13 -0
- package/dist/core/predefined/operators/index.mjs.map +1 -0
- package/dist/core/predefined/operators/map-optional.d.mts +4 -0
- package/dist/core/predefined/operators/map-optional.d.mts.map +1 -0
- package/dist/core/predefined/operators/map-optional.mjs +7 -0
- package/dist/core/predefined/operators/map-optional.mjs.map +1 -0
- package/dist/core/predefined/operators/map-result-err.d.mts +4 -0
- package/dist/core/predefined/operators/map-result-err.d.mts.map +1 -0
- package/dist/core/predefined/operators/map-result-err.mjs +7 -0
- package/dist/core/predefined/operators/map-result-err.mjs.map +1 -0
- package/dist/core/predefined/operators/map-result-ok.d.mts +4 -0
- package/dist/core/predefined/operators/map-result-ok.d.mts.map +1 -0
- package/dist/core/predefined/operators/map-result-ok.mjs +7 -0
- package/dist/core/predefined/operators/map-result-ok.mjs.map +1 -0
- package/dist/core/predefined/operators/map-to.d.mts +3 -0
- package/dist/core/predefined/operators/map-to.d.mts.map +1 -0
- package/dist/core/predefined/operators/map-to.mjs +6 -0
- package/dist/core/predefined/operators/map-to.mjs.map +1 -0
- package/dist/core/predefined/operators/map.d.mts +3 -0
- package/dist/core/predefined/operators/map.d.mts.map +1 -0
- package/dist/core/predefined/operators/map.mjs +8 -0
- package/dist/core/predefined/operators/map.mjs.map +1 -0
- package/dist/core/predefined/operators/pluck.d.mts +8 -0
- package/dist/core/predefined/operators/pluck.d.mts.map +1 -0
- package/dist/core/predefined/operators/pluck.mjs +11 -0
- package/dist/core/predefined/operators/pluck.mjs.map +1 -0
- package/dist/core/predefined/operators/skip.d.mts +3 -0
- package/dist/core/predefined/operators/skip.d.mts.map +1 -0
- package/dist/core/predefined/operators/skip.mjs +9 -0
- package/dist/core/predefined/operators/skip.mjs.map +1 -0
- package/dist/core/predefined/operators/take.d.mts +3 -0
- package/dist/core/predefined/operators/take.d.mts.map +1 -0
- package/dist/core/predefined/operators/take.mjs +8 -0
- package/dist/core/predefined/operators/take.mjs.map +1 -0
- package/dist/core/predefined/operators/unwrap-optional.d.mts +4 -0
- package/dist/core/predefined/operators/unwrap-optional.d.mts.map +1 -0
- package/dist/core/predefined/operators/unwrap-optional.mjs +9 -0
- package/dist/core/predefined/operators/unwrap-optional.mjs.map +1 -0
- package/dist/core/predefined/operators/unwrap-result-err.d.mts +4 -0
- package/dist/core/predefined/operators/unwrap-result-err.d.mts.map +1 -0
- package/dist/core/predefined/operators/unwrap-result-err.mjs +7 -0
- package/dist/core/predefined/operators/unwrap-result-err.mjs.map +1 -0
- package/dist/core/predefined/operators/unwrap-result-ok.d.mts +4 -0
- package/dist/core/predefined/operators/unwrap-result-ok.d.mts.map +1 -0
- package/dist/core/predefined/operators/unwrap-result-ok.mjs +9 -0
- package/dist/core/predefined/operators/unwrap-result-ok.mjs.map +1 -0
- package/dist/core/types/observable-family.d.mts +7 -7
- package/dist/entry-point.mjs +15 -3
- package/dist/entry-point.mjs.map +1 -1
- package/dist/index.mjs +15 -3
- package/dist/index.mjs.map +1 -1
- package/dist/utils/create-event-emitter.d.mts +20 -2
- package/dist/utils/create-event-emitter.d.mts.map +1 -1
- package/dist/utils/create-event-emitter.mjs +20 -2
- package/dist/utils/create-event-emitter.mjs.map +1 -1
- package/dist/utils/create-reducer.d.mts +13 -1
- package/dist/utils/create-reducer.d.mts.map +1 -1
- package/dist/utils/create-reducer.mjs +13 -1
- package/dist/utils/create-reducer.mjs.map +1 -1
- package/dist/utils/create-state.d.mts +24 -4
- package/dist/utils/create-state.d.mts.map +1 -1
- package/dist/utils/create-state.mjs +24 -4
- package/dist/utils/create-state.mjs.map +1 -1
- package/package.json +13 -12
- package/src/core/combine/combine.mts +34 -4
- package/src/core/combine/merge.mts +30 -4
- package/src/core/combine/zip.mts +28 -3
- package/src/core/create/from-array.mts +21 -3
- package/src/core/create/from-promise.mts +29 -7
- package/src/core/create/from-subscribable.mts +58 -0
- package/src/core/create/interval.mts +29 -4
- package/src/core/create/of.mts +22 -3
- package/src/core/create/source.mts +22 -3
- package/src/core/create/timer.mts +23 -4
- package/src/core/index.mts +1 -0
- package/src/core/operators/audit-time.mts +59 -0
- package/src/core/operators/debounce-time.mts +22 -2
- package/src/core/operators/filter.mts +26 -1
- package/src/core/operators/map-with-index.mts +22 -66
- package/src/core/operators/merge-map.mts +48 -6
- package/src/core/operators/pairwise.mts +30 -1
- package/src/core/operators/scan.mts +23 -1
- package/src/core/operators/skip-if-no-change.mts +27 -3
- package/src/core/operators/skip-until.mts +50 -0
- package/src/core/operators/skip-while.mts +49 -16
- package/src/core/operators/switch-map.mts +39 -5
- package/src/core/operators/take-until.mts +20 -1
- package/src/core/operators/take-while.mts +49 -8
- package/src/core/operators/throttle-time.mts +44 -5
- package/src/core/operators/with-buffered-from.mts +58 -1
- package/src/core/operators/with-current-value-from.mts +60 -1
- package/src/core/operators/with-initial-value.mts +24 -2
- package/src/core/predefined/index.mts +1 -0
- package/src/core/predefined/operators/attach-index.mts +13 -0
- package/src/core/predefined/operators/index.mts +12 -0
- package/src/core/predefined/operators/map-optional.mts +8 -0
- package/src/core/predefined/operators/map-result-err.mts +8 -0
- package/src/core/predefined/operators/map-result-ok.mts +8 -0
- package/src/core/predefined/operators/map-to.mts +5 -0
- package/src/core/predefined/operators/map.mts +5 -0
- package/src/core/predefined/operators/pluck.mts +12 -0
- package/src/core/predefined/operators/skip.mts +10 -0
- package/src/core/predefined/operators/take.mts +6 -0
- package/src/core/predefined/operators/unwrap-optional.mts +9 -0
- package/src/core/predefined/operators/unwrap-result-err.mts +8 -0
- package/src/core/predefined/operators/unwrap-result-ok.mts +9 -0
- package/src/core/types/observable-family.mts +7 -7
- package/src/utils/create-event-emitter.mts +20 -2
- package/src/utils/create-reducer.mts +13 -1
- package/src/utils/create-state.mts +24 -4
|
Binary file
|
|
@@ -9,26 +9,56 @@ import { type CombineObservableRefined, type Observable } from '../types/index.m
|
|
|
9
9
|
*
|
|
10
10
|
* @example
|
|
11
11
|
* ```ts
|
|
12
|
+
* // Timeline:
|
|
13
|
+
* //
|
|
14
|
+
* // name$ "Alice" "Bob"
|
|
15
|
+
* // age$ 25 30
|
|
16
|
+
* // user$ ["Alice",25] ["Bob",25] ["Bob",30]
|
|
17
|
+
* //
|
|
18
|
+
* // Explanation:
|
|
19
|
+
* // - combine waits for all sources to emit at least once
|
|
20
|
+
* // - Then emits the latest value from all sources whenever any source emits
|
|
21
|
+
* // - Always emits an array with the latest values from each source
|
|
22
|
+
*
|
|
12
23
|
* const name$ = source<string>();
|
|
13
24
|
*
|
|
14
25
|
* const age$ = source<number>();
|
|
15
26
|
*
|
|
16
27
|
* const user$ = combine([name$, age$]);
|
|
17
28
|
*
|
|
29
|
+
* const mut_history: (readonly [string, number])[] = [];
|
|
30
|
+
*
|
|
18
31
|
* user$.subscribe(([name_, age]) => {
|
|
19
|
-
*
|
|
32
|
+
* mut_history.push([name_, age]);
|
|
20
33
|
* });
|
|
21
34
|
*
|
|
22
|
-
* name$.next('Alice');
|
|
35
|
+
* name$.next('Alice'); // nothing logged (age$ hasn't emitted yet)
|
|
36
|
+
*
|
|
37
|
+
* assert.deepStrictEqual(mut_history, []);
|
|
23
38
|
*
|
|
24
39
|
* age$.next(25); // logs: { name: 'Alice', age: 25 }
|
|
25
40
|
*
|
|
41
|
+
* assert.deepStrictEqual(mut_history, [['Alice', 25]]);
|
|
42
|
+
*
|
|
26
43
|
* name$.next('Bob'); // logs: { name: 'Bob', age: 25 }
|
|
44
|
+
*
|
|
45
|
+
* assert.deepStrictEqual(mut_history, [
|
|
46
|
+
* ['Alice', 25],
|
|
47
|
+
* ['Bob', 25],
|
|
48
|
+
* ]);
|
|
49
|
+
*
|
|
50
|
+
* age$.next(30); // logs: { name: 'Bob', age: 30 }
|
|
51
|
+
*
|
|
52
|
+
* assert.deepStrictEqual(mut_history, [
|
|
53
|
+
* ['Alice', 25],
|
|
54
|
+
* ['Bob', 25],
|
|
55
|
+
* ['Bob', 30],
|
|
56
|
+
* ]);
|
|
27
57
|
* ```
|
|
28
58
|
*/
|
|
29
59
|
export declare const combine: <const OS extends NonEmptyArray<Observable<unknown>>>(parents: OS) => CombineObservableRefined<OS>;
|
|
30
60
|
/**
|
|
31
|
-
* Alias for `combine
|
|
61
|
+
* Alias for `combine`.
|
|
32
62
|
* @see combine
|
|
33
63
|
*/
|
|
34
64
|
export declare const combineLatest: <const OS extends NonEmptyArray<Observable<unknown>>>(parents: OS) => CombineObservableRefined<OS>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combine.d.mts","sourceRoot":"","sources":["../../../src/core/combine/combine.mts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,wBAAwB,EAI7B,KAAK,UAAU,EAIhB,MAAM,oBAAoB,CAAC;AAE5B
|
|
1
|
+
{"version":3,"file":"combine.d.mts","sourceRoot":"","sources":["../../../src/core/combine/combine.mts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,wBAAwB,EAI7B,KAAK,UAAU,EAIhB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,eAAO,MAAM,OAAO,GAAI,KAAK,CAAC,EAAE,SAAS,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EACzE,SAAS,EAAE,KACV,wBAAwB,CAAC,EAAE,CAIgB,CAAC;AAE/C;;;GAGG;AACH,eAAO,MAAM,aAAa,SAZI,EAAE,SAAS,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,WAChE,EAAE,KACV,wBAAwB,CAAC,EAAE,CAUM,CAAC"}
|
|
@@ -15,31 +15,61 @@ import { withInitialValue } from '../operators/with-initial-value.mjs';
|
|
|
15
15
|
*
|
|
16
16
|
* @example
|
|
17
17
|
* ```ts
|
|
18
|
+
* // Timeline:
|
|
19
|
+
* //
|
|
20
|
+
* // name$ "Alice" "Bob"
|
|
21
|
+
* // age$ 25 30
|
|
22
|
+
* // user$ ["Alice",25] ["Bob",25] ["Bob",30]
|
|
23
|
+
* //
|
|
24
|
+
* // Explanation:
|
|
25
|
+
* // - combine waits for all sources to emit at least once
|
|
26
|
+
* // - Then emits the latest value from all sources whenever any source emits
|
|
27
|
+
* // - Always emits an array with the latest values from each source
|
|
28
|
+
*
|
|
18
29
|
* const name$ = source<string>();
|
|
19
30
|
*
|
|
20
31
|
* const age$ = source<number>();
|
|
21
32
|
*
|
|
22
33
|
* const user$ = combine([name$, age$]);
|
|
23
34
|
*
|
|
35
|
+
* const mut_history: (readonly [string, number])[] = [];
|
|
36
|
+
*
|
|
24
37
|
* user$.subscribe(([name_, age]) => {
|
|
25
|
-
*
|
|
38
|
+
* mut_history.push([name_, age]);
|
|
26
39
|
* });
|
|
27
40
|
*
|
|
28
|
-
* name$.next('Alice');
|
|
41
|
+
* name$.next('Alice'); // nothing logged (age$ hasn't emitted yet)
|
|
42
|
+
*
|
|
43
|
+
* assert.deepStrictEqual(mut_history, []);
|
|
29
44
|
*
|
|
30
45
|
* age$.next(25); // logs: { name: 'Alice', age: 25 }
|
|
31
46
|
*
|
|
47
|
+
* assert.deepStrictEqual(mut_history, [['Alice', 25]]);
|
|
48
|
+
*
|
|
32
49
|
* name$.next('Bob'); // logs: { name: 'Bob', age: 25 }
|
|
50
|
+
*
|
|
51
|
+
* assert.deepStrictEqual(mut_history, [
|
|
52
|
+
* ['Alice', 25],
|
|
53
|
+
* ['Bob', 25],
|
|
54
|
+
* ]);
|
|
55
|
+
*
|
|
56
|
+
* age$.next(30); // logs: { name: 'Bob', age: 30 }
|
|
57
|
+
*
|
|
58
|
+
* assert.deepStrictEqual(mut_history, [
|
|
59
|
+
* ['Alice', 25],
|
|
60
|
+
* ['Bob', 25],
|
|
61
|
+
* ['Bob', 30],
|
|
62
|
+
* ]);
|
|
33
63
|
* ```
|
|
34
64
|
*/
|
|
35
65
|
const combine = (parents) =>
|
|
36
66
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
37
67
|
new CombineObservableClass(parents);
|
|
38
68
|
/**
|
|
39
|
-
* Alias for `combine
|
|
69
|
+
* Alias for `combine`.
|
|
40
70
|
* @see combine
|
|
41
71
|
*/
|
|
42
|
-
const combineLatest = combine;
|
|
72
|
+
const combineLatest = combine;
|
|
43
73
|
class CombineObservableClass extends SyncChildObservableClass {
|
|
44
74
|
constructor(parents) {
|
|
45
75
|
const parentsValues = parents.map((p) => p.getSnapshot());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combine.mjs","sources":["../../../src/core/combine/combine.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAgBA
|
|
1
|
+
{"version":3,"file":"combine.mjs","sources":["../../../src/core/combine/combine.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAgBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDG;AACI,MAAM,OAAO,GAAG,CACrB,OAAW;AAEX;AACA,IAAI,sBAAsB,CACxB,OAAO;AAGX;;;AAGG;AACI,MAAM,aAAa,GAAG;AAE7B,MAAM,sBACJ,SAAQ,wBAA8B,CAAA;AAGtC,IAAA,WAAA,CAAY,OAAgB,EAAA;AAC1B,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAEzD,QAAA,KAAK,CAAC;YACJ,OAAO;YACP,YAAY,EAAE,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;kBAC7C,QAAQ,CAAC,IAAI;;AAEX,gBAAA,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAM;kBAE7C,QAAQ,CAAC,IAAI;AAClB,SAAA,CAAC;;AAGK,IAAA,SAAS,CAAC,aAA4B,EAAA;AAC7C,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,KAAK,aAAa,CAAC;AAAE,YAAA,OAAO;AAEzE,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAE7D,IAAI,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACvC,YAAA,MAAM,SAAS;;AAEb,YAAA,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAM;AAE5C,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC;;;AAG3C;AAED;IACE;AACE,QAAA,MAAM,EAAE,GAAkB,MAAM,EAAK;AAErC,QAAA,MAAM,EAAE,GAAkB,MAAM,EAAK;QAE1B,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;;IAO7B;AACE,QAAA,MAAM,EAAE,GAA6B,MAAM,EAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAE1E,QAAA,MAAM,EAAE,GAAkB,MAAM,EAAK;QAE1B,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;;IAO7B;AACE,QAAA,MAAM,EAAE,GAA6B,MAAM,EAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAE1E,QAAA,MAAM,EAAE,GAA6B,MAAM,EAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAE/D,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;;;AAM7B,IAAA,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAE/B,IAAA,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAE1B,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;IAEf,OAAO,CAAC;AAClB,QAAA,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC5B,QAAA,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC7B,KAAA;AAQH;;;;"}
|
|
@@ -9,16 +9,42 @@ import { type MergeObservableRefined, type Observable } from '../types/index.mjs
|
|
|
9
9
|
*
|
|
10
10
|
* @example
|
|
11
11
|
* ```ts
|
|
12
|
-
*
|
|
12
|
+
* // Timeline:
|
|
13
|
+
* //
|
|
14
|
+
* // clicks$ c1 c2 c3
|
|
15
|
+
* // keys$ k1 k2 k3
|
|
16
|
+
* // events$ c1 k1 c2 k2 c3 k3
|
|
17
|
+
* //
|
|
18
|
+
* // Explanation:
|
|
19
|
+
* // - merge combines multiple observables into one
|
|
20
|
+
* // - Emits values from any source as they arrive
|
|
21
|
+
* // - Order is preserved based on emission time
|
|
13
22
|
*
|
|
14
|
-
* const
|
|
23
|
+
* const clicks$ = source<string>();
|
|
24
|
+
*
|
|
25
|
+
* const keys$ = source<string>();
|
|
15
26
|
*
|
|
16
27
|
* const events$ = merge([clicks$, keys$]);
|
|
17
28
|
*
|
|
29
|
+
* const mut_history: string[] = [];
|
|
30
|
+
*
|
|
18
31
|
* events$.subscribe((event_) => {
|
|
19
|
-
*
|
|
32
|
+
* mut_history.push(event_);
|
|
20
33
|
* });
|
|
21
|
-
*
|
|
34
|
+
*
|
|
35
|
+
* clicks$.next('c1');
|
|
36
|
+
*
|
|
37
|
+
* assert.deepStrictEqual(mut_history, ['c1']);
|
|
38
|
+
*
|
|
39
|
+
* keys$.next('k1');
|
|
40
|
+
*
|
|
41
|
+
* assert.deepStrictEqual(mut_history, ['c1', 'k1']);
|
|
42
|
+
*
|
|
43
|
+
* clicks$.next('c2');
|
|
44
|
+
*
|
|
45
|
+
* keys$.next('k2');
|
|
46
|
+
*
|
|
47
|
+
* assert.deepStrictEqual(mut_history, ['c1', 'k1', 'c2', 'k2']);
|
|
22
48
|
* ```
|
|
23
49
|
*
|
|
24
50
|
* @note To improve code readability, consider using `createState` instead of `merge`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.mts","sourceRoot":"","sources":["../../../src/core/combine/merge.mts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,sBAAsB,EAE3B,KAAK,UAAU,EAIhB,MAAM,oBAAoB,CAAC;AAE5B
|
|
1
|
+
{"version":3,"file":"merge.d.mts","sourceRoot":"","sources":["../../../src/core/combine/merge.mts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,sBAAsB,EAE3B,KAAK,UAAU,EAIhB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,eAAO,MAAM,KAAK,GAAI,KAAK,CAAC,EAAE,SAAS,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EACvE,SAAS,EAAE,KACV,sBAAsB,CAAC,EAAE,CAEqC,CAAC"}
|
|
@@ -12,16 +12,42 @@ import '../utils/id-maker.mjs';
|
|
|
12
12
|
*
|
|
13
13
|
* @example
|
|
14
14
|
* ```ts
|
|
15
|
-
*
|
|
15
|
+
* // Timeline:
|
|
16
|
+
* //
|
|
17
|
+
* // clicks$ c1 c2 c3
|
|
18
|
+
* // keys$ k1 k2 k3
|
|
19
|
+
* // events$ c1 k1 c2 k2 c3 k3
|
|
20
|
+
* //
|
|
21
|
+
* // Explanation:
|
|
22
|
+
* // - merge combines multiple observables into one
|
|
23
|
+
* // - Emits values from any source as they arrive
|
|
24
|
+
* // - Order is preserved based on emission time
|
|
16
25
|
*
|
|
17
|
-
* const
|
|
26
|
+
* const clicks$ = source<string>();
|
|
27
|
+
*
|
|
28
|
+
* const keys$ = source<string>();
|
|
18
29
|
*
|
|
19
30
|
* const events$ = merge([clicks$, keys$]);
|
|
20
31
|
*
|
|
32
|
+
* const mut_history: string[] = [];
|
|
33
|
+
*
|
|
21
34
|
* events$.subscribe((event_) => {
|
|
22
|
-
*
|
|
35
|
+
* mut_history.push(event_);
|
|
23
36
|
* });
|
|
24
|
-
*
|
|
37
|
+
*
|
|
38
|
+
* clicks$.next('c1');
|
|
39
|
+
*
|
|
40
|
+
* assert.deepStrictEqual(mut_history, ['c1']);
|
|
41
|
+
*
|
|
42
|
+
* keys$.next('k1');
|
|
43
|
+
*
|
|
44
|
+
* assert.deepStrictEqual(mut_history, ['c1', 'k1']);
|
|
45
|
+
*
|
|
46
|
+
* clicks$.next('c2');
|
|
47
|
+
*
|
|
48
|
+
* keys$.next('k2');
|
|
49
|
+
*
|
|
50
|
+
* assert.deepStrictEqual(mut_history, ['c1', 'k1', 'c2', 'k2']);
|
|
25
51
|
* ```
|
|
26
52
|
*
|
|
27
53
|
* @note To improve code readability, consider using `createState` instead of `merge`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.mjs","sources":["../../../src/core/combine/merge.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAaA
|
|
1
|
+
{"version":3,"file":"merge.mjs","sources":["../../../src/core/combine/merge.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDG;AACI,MAAM,KAAK,GAAG,CACnB,OAAW;AAEX;AACA,IAAI,oBAAoB,CAAC,OAAO;AAElC,MAAM,oBACJ,SAAQ,wBAA4C,CAAA;AAGpD,IAAA,WAAA,CAAY,OAAgB,EAAA;AAC1B,QAAA,KAAK,CAAC;YACJ,OAAO;YACP,YAAY,EAAE,QAAQ,CAAC,IAAI;AAC5B,SAAA,CAAC;;AAGK,IAAA,SAAS,CAAC,aAA4B,EAAA;AAC7C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CACnC,CAAC,CAAC,KACA,CAAC,CAAC,aAAa,KAAK,aAAa,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CACxE;QAED,IAAI,WAAW,KAAK,SAAS;YAAE;AAE/B,QAAA,MAAM,SAAS;;QAEb,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAoB;AAE/D,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC;;AAEzC;;;;"}
|
|
@@ -10,16 +10,41 @@ import { type Observable, type ZipObservableRefined } from '../types/index.mjs';
|
|
|
10
10
|
*
|
|
11
11
|
* @example
|
|
12
12
|
* ```ts
|
|
13
|
+
* // Timeline:
|
|
14
|
+
* //
|
|
15
|
+
* // letters$ 'a' 'b' 'c'
|
|
16
|
+
* // numbers$ 1 2 3
|
|
17
|
+
* // zipped$ ['a',1] ['b',2] ['c',3]
|
|
18
|
+
* //
|
|
19
|
+
* // Explanation:
|
|
20
|
+
* // - zip pairs values by their index from multiple sources
|
|
21
|
+
* // - Waits for all sources to emit at the same index
|
|
22
|
+
* // - Completes when any source completes
|
|
23
|
+
*
|
|
13
24
|
* const letters$ = fromArray(['a', 'b', 'c']);
|
|
14
25
|
*
|
|
15
26
|
* const numbers$ = fromArray([1, 2, 3]);
|
|
16
27
|
*
|
|
17
28
|
* const zipped$ = zip([letters$, numbers$]);
|
|
18
29
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
30
|
+
* const mut_history: (readonly [string, number])[] = [];
|
|
31
|
+
*
|
|
32
|
+
* await new Promise<void>((resolve) => {
|
|
33
|
+
* zipped$.subscribe(
|
|
34
|
+
* ([letter, num]) => {
|
|
35
|
+
* mut_history.push([letter, num]);
|
|
36
|
+
* },
|
|
37
|
+
* () => {
|
|
38
|
+
* resolve();
|
|
39
|
+
* },
|
|
40
|
+
* );
|
|
21
41
|
* });
|
|
22
|
-
*
|
|
42
|
+
*
|
|
43
|
+
* assert.deepStrictEqual(mut_history, [
|
|
44
|
+
* ['a', 1],
|
|
45
|
+
* ['b', 2],
|
|
46
|
+
* ['c', 3],
|
|
47
|
+
* ]);
|
|
23
48
|
* ```
|
|
24
49
|
*/
|
|
25
50
|
export declare const zip: <const OS extends NonEmptyArray<Observable<unknown>>>(parents: OS) => ZipObservableRefined<OS>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zip.d.mts","sourceRoot":"","sources":["../../../src/core/combine/zip.mts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,UAAU,EAMf,KAAK,oBAAoB,EAC1B,MAAM,oBAAoB,CAAC;AAE5B
|
|
1
|
+
{"version":3,"file":"zip.d.mts","sourceRoot":"","sources":["../../../src/core/combine/zip.mts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,UAAU,EAMf,KAAK,oBAAoB,EAC1B,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,eAAO,MAAM,GAAG,GAAI,KAAK,CAAC,EAAE,SAAS,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EACrE,SAAS,EAAE,KACV,oBAAoB,CAAC,EAAE,CAE8C,CAAC"}
|
|
@@ -13,16 +13,41 @@ import '../utils/id-maker.mjs';
|
|
|
13
13
|
*
|
|
14
14
|
* @example
|
|
15
15
|
* ```ts
|
|
16
|
+
* // Timeline:
|
|
17
|
+
* //
|
|
18
|
+
* // letters$ 'a' 'b' 'c'
|
|
19
|
+
* // numbers$ 1 2 3
|
|
20
|
+
* // zipped$ ['a',1] ['b',2] ['c',3]
|
|
21
|
+
* //
|
|
22
|
+
* // Explanation:
|
|
23
|
+
* // - zip pairs values by their index from multiple sources
|
|
24
|
+
* // - Waits for all sources to emit at the same index
|
|
25
|
+
* // - Completes when any source completes
|
|
26
|
+
*
|
|
16
27
|
* const letters$ = fromArray(['a', 'b', 'c']);
|
|
17
28
|
*
|
|
18
29
|
* const numbers$ = fromArray([1, 2, 3]);
|
|
19
30
|
*
|
|
20
31
|
* const zipped$ = zip([letters$, numbers$]);
|
|
21
32
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
33
|
+
* const mut_history: (readonly [string, number])[] = [];
|
|
34
|
+
*
|
|
35
|
+
* await new Promise<void>((resolve) => {
|
|
36
|
+
* zipped$.subscribe(
|
|
37
|
+
* ([letter, num]) => {
|
|
38
|
+
* mut_history.push([letter, num]);
|
|
39
|
+
* },
|
|
40
|
+
* () => {
|
|
41
|
+
* resolve();
|
|
42
|
+
* },
|
|
43
|
+
* );
|
|
24
44
|
* });
|
|
25
|
-
*
|
|
45
|
+
*
|
|
46
|
+
* assert.deepStrictEqual(mut_history, [
|
|
47
|
+
* ['a', 1],
|
|
48
|
+
* ['b', 2],
|
|
49
|
+
* ['c', 3],
|
|
50
|
+
* ]);
|
|
26
51
|
* ```
|
|
27
52
|
*/
|
|
28
53
|
const zip = (parents) =>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zip.mjs","sources":["../../../src/core/combine/zip.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAiBA
|
|
1
|
+
{"version":3,"file":"zip.mjs","sources":["../../../src/core/combine/zip.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAiBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CG;AACI,MAAM,GAAG,GAAG,CACjB,OAAW;AAEX;AACA,IAAI,kBAAkB,CAAC,OAAO;AAEhC,MAAM,kBACJ,SAAQ,wBAA8B,CAAA;AAG7B,IAAA,OAAO;AAEhB,IAAA,WAAA,CAAY,OAAgB,EAAA;AAC1B,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAEzD,QAAA,KAAK,CAAC;YACJ,OAAO;YACP,YAAY,EAAE,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;kBAC7C,QAAQ,CAAC,IAAI;;AAEX,gBAAA,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAM;kBAE7C,QAAQ,CAAC,IAAI;AAClB,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,MAC9B,WAAW,EAAE,CACiB;;AAGzB,IAAA,SAAS,CAAC,aAA4B,EAAA;AAC7C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO;AAE3B,QAAA,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE;AACjD,YAAA,MAAM,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE;AAE5B,YAAA,IAAI,GAAG,CAAC,aAAa,KAAK,aAAa,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;gBAC9D,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC;;;AAIpC,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACzC,YAAA,MAAM,SAAS;;YAEb,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAM;AAE3D,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC;;;AAG3C;;;;"}
|
|
@@ -9,12 +9,30 @@ import { type FromArrayObservable } from '../types/index.mjs';
|
|
|
9
9
|
*
|
|
10
10
|
* @example
|
|
11
11
|
* ```ts
|
|
12
|
+
* // Timeline:
|
|
13
|
+
* //
|
|
14
|
+
* // nums$ 1 2 3 | (completes)
|
|
15
|
+
* //
|
|
16
|
+
* // Explanation:
|
|
17
|
+
* // - fromArray creates an observable from an array
|
|
18
|
+
* // - Emits all values synchronously, then completes
|
|
19
|
+
*
|
|
12
20
|
* const nums$ = fromArray([1, 2, 3]);
|
|
13
21
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
22
|
+
* const mut_history: number[] = [];
|
|
23
|
+
*
|
|
24
|
+
* await new Promise<void>((resolve) => {
|
|
25
|
+
* nums$.subscribe(
|
|
26
|
+
* (x) => {
|
|
27
|
+
* mut_history.push(x);
|
|
28
|
+
* },
|
|
29
|
+
* () => {
|
|
30
|
+
* resolve();
|
|
31
|
+
* },
|
|
32
|
+
* );
|
|
16
33
|
* });
|
|
17
|
-
*
|
|
34
|
+
*
|
|
35
|
+
* assert.deepStrictEqual(mut_history, [1, 2, 3]);
|
|
18
36
|
* ```
|
|
19
37
|
*/
|
|
20
38
|
export declare const fromArray: <A>(values: readonly A[], startManually?: boolean) => FromArrayObservable<A>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"from-array.d.mts","sourceRoot":"","sources":["../../../src/core/create/from-array.mts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D
|
|
1
|
+
{"version":3,"file":"from-array.d.mts","sourceRoot":"","sources":["../../../src/core/create/from-array.mts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EACzB,QAAQ,SAAS,CAAC,EAAE,EACpB,gBAAe,OAAe,KAC7B,mBAAmB,CAAC,CAAC,CACgC,CAAC"}
|
|
@@ -12,12 +12,30 @@ import { RootObservableClass } from '../class/root-observable-class.mjs';
|
|
|
12
12
|
*
|
|
13
13
|
* @example
|
|
14
14
|
* ```ts
|
|
15
|
+
* // Timeline:
|
|
16
|
+
* //
|
|
17
|
+
* // nums$ 1 2 3 | (completes)
|
|
18
|
+
* //
|
|
19
|
+
* // Explanation:
|
|
20
|
+
* // - fromArray creates an observable from an array
|
|
21
|
+
* // - Emits all values synchronously, then completes
|
|
22
|
+
*
|
|
15
23
|
* const nums$ = fromArray([1, 2, 3]);
|
|
16
24
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
25
|
+
* const mut_history: number[] = [];
|
|
26
|
+
*
|
|
27
|
+
* await new Promise<void>((resolve) => {
|
|
28
|
+
* nums$.subscribe(
|
|
29
|
+
* (x) => {
|
|
30
|
+
* mut_history.push(x);
|
|
31
|
+
* },
|
|
32
|
+
* () => {
|
|
33
|
+
* resolve();
|
|
34
|
+
* },
|
|
35
|
+
* );
|
|
19
36
|
* });
|
|
20
|
-
*
|
|
37
|
+
*
|
|
38
|
+
* assert.deepStrictEqual(mut_history, [1, 2, 3]);
|
|
21
39
|
* ```
|
|
22
40
|
*/
|
|
23
41
|
const fromArray = (values, startManually = false) => new FromArrayObservableClass(values, startManually);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"from-array.mjs","sources":["../../../src/core/create/from-array.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAIA
|
|
1
|
+
{"version":3,"file":"from-array.mjs","sources":["../../../src/core/create/from-array.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCG;AACI,MAAM,SAAS,GAAG,CACvB,MAAoB,EACpB,aAAA,GAAyB,KAAK,KAE9B,IAAI,wBAAwB,CAAI,MAAM,EAAE,aAAa;AAEvD,MAAM,wBACJ,SAAQ,mBAAsB,CAAA;AAGrB,IAAA,OAAO;IAEhB,WAAA,CAAY,MAAoB,EAAE,aAAA,GAAyB,KAAK,EAAA;QAC9D,KAAK,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;AAEtC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;QAErB,IAAI,CAAC,aAAa,EAAE;YAClB,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,IAAI,EAAE;YACb,CAAC,EAAE,CAAC,CAAC;QACP;IACF;IAEA,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,WAAW;AAAE,YAAA,OAAO,IAAI;AAEjC,QAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACrB;QAEA,IAAI,CAAC,QAAQ,EAAE;AAEf,QAAA,OAAO,IAAI;IACb;AACD;;;;"}
|
|
@@ -10,15 +10,37 @@ import { type FromPromiseObservable } from '../types/index.mjs';
|
|
|
10
10
|
*
|
|
11
11
|
* @example
|
|
12
12
|
* ```ts
|
|
13
|
-
*
|
|
13
|
+
* // Timeline:
|
|
14
|
+
* //
|
|
15
|
+
* // promise [pending...] -> resolved/rejected
|
|
16
|
+
* // data$ Ok(value) or Err(error)
|
|
17
|
+
* //
|
|
18
|
+
* // Explanation:
|
|
19
|
+
* // - fromPromise converts a Promise into an observable
|
|
20
|
+
* // - Emits a Result type: Ok(value) on success, Err(error) on failure
|
|
21
|
+
* // - Completes after emitting the result
|
|
22
|
+
* // - Useful for integrating async operations into reactive flows
|
|
14
23
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
24
|
+
* const fetchData = async (): Promise<{ value: number }> => ({ value: 42 });
|
|
25
|
+
*
|
|
26
|
+
* const data$ = fromPromise(fetchData());
|
|
27
|
+
*
|
|
28
|
+
* const mut_history: { value: number }[] = [];
|
|
29
|
+
*
|
|
30
|
+
* await new Promise<void>((resolve) => {
|
|
31
|
+
* data$.subscribe(
|
|
32
|
+
* (result) => {
|
|
33
|
+
* if (Result.isOk(result)) {
|
|
34
|
+
* mut_history.push(result.value);
|
|
35
|
+
* }
|
|
36
|
+
* },
|
|
37
|
+
* () => {
|
|
38
|
+
* resolve();
|
|
39
|
+
* },
|
|
40
|
+
* );
|
|
21
41
|
* });
|
|
42
|
+
*
|
|
43
|
+
* assert.deepStrictEqual(mut_history, [{ value: 42 }]);
|
|
22
44
|
* ```
|
|
23
45
|
*/
|
|
24
46
|
export declare const fromPromise: <A, E = unknown>(promise: Readonly<Promise<A>>) => FromPromiseObservable<A, E>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"from-promise.d.mts","sourceRoot":"","sources":["../../../src/core/create/from-promise.mts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE
|
|
1
|
+
{"version":3,"file":"from-promise.d.mts","sourceRoot":"","sources":["../../../src/core/create/from-promise.mts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,CAAC,GAAG,OAAO,EACxC,SAAS,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAC5B,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAA4C,CAAC"}
|
|
@@ -13,15 +13,37 @@ import { RootObservableClass } from '../class/root-observable-class.mjs';
|
|
|
13
13
|
*
|
|
14
14
|
* @example
|
|
15
15
|
* ```ts
|
|
16
|
-
*
|
|
16
|
+
* // Timeline:
|
|
17
|
+
* //
|
|
18
|
+
* // promise [pending...] -> resolved/rejected
|
|
19
|
+
* // data$ Ok(value) or Err(error)
|
|
20
|
+
* //
|
|
21
|
+
* // Explanation:
|
|
22
|
+
* // - fromPromise converts a Promise into an observable
|
|
23
|
+
* // - Emits a Result type: Ok(value) on success, Err(error) on failure
|
|
24
|
+
* // - Completes after emitting the result
|
|
25
|
+
* // - Useful for integrating async operations into reactive flows
|
|
17
26
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
27
|
+
* const fetchData = async (): Promise<{ value: number }> => ({ value: 42 });
|
|
28
|
+
*
|
|
29
|
+
* const data$ = fromPromise(fetchData());
|
|
30
|
+
*
|
|
31
|
+
* const mut_history: { value: number }[] = [];
|
|
32
|
+
*
|
|
33
|
+
* await new Promise<void>((resolve) => {
|
|
34
|
+
* data$.subscribe(
|
|
35
|
+
* (result) => {
|
|
36
|
+
* if (Result.isOk(result)) {
|
|
37
|
+
* mut_history.push(result.value);
|
|
38
|
+
* }
|
|
39
|
+
* },
|
|
40
|
+
* () => {
|
|
41
|
+
* resolve();
|
|
42
|
+
* },
|
|
43
|
+
* );
|
|
24
44
|
* });
|
|
45
|
+
*
|
|
46
|
+
* assert.deepStrictEqual(mut_history, [{ value: 42 }]);
|
|
25
47
|
* ```
|
|
26
48
|
*/
|
|
27
49
|
const fromPromise = (promise) => new FromPromiseObservableClass(promise);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"from-promise.mjs","sources":["../../../src/core/create/from-promise.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAIA
|
|
1
|
+
{"version":3,"file":"from-promise.mjs","sources":["../../../src/core/create/from-promise.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CG;AACI,MAAM,WAAW,GAAG,CACzB,OAA6B,KACG,IAAI,0BAA0B,CAAC,OAAO;AAExE,MAAM,0BACJ,SAAQ,mBAAiC,CAAA;AAGzC,IAAA,WAAA,CAAY,OAA6B,EAAA;QACvC,KAAK,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEtC;AACG,aAAA,IAAI,CAAC,CAAC,KAAK,KAAI;YACd,IAAI,IAAI,CAAC,WAAW;gBAAE;YAEtB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AACpC,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,KAAc,KAAI;YACxB,IAAI,IAAI,CAAC,WAAW;gBAAE;AAEtB,YAAA,IAAI,CAAC,WAAW,CACd,MAAM,CAAC,GAAG;;YAER,KAAU,CACX,CACF;AACH,QAAA,CAAC;aACA,OAAO,CAAC,MAAK;YACZ,IAAI,CAAC,QAAQ,EAAE;AACjB,QAAA,CAAC,CAAC;IACN;AACD;;;;"}
|
|
@@ -1,3 +1,61 @@
|
|
|
1
1
|
import { type FromSubscribableObservable, type Subscribable } from '../types/index.mjs';
|
|
2
|
+
/**
|
|
3
|
+
* Converts any subscribable object into a SynState Observable.
|
|
4
|
+
* Works with objects that have a subscribe(onNext, onError, onComplete) method.
|
|
5
|
+
*
|
|
6
|
+
* @template A - The type of values from the subscribable
|
|
7
|
+
* @template E - The type of errors from the subscribable
|
|
8
|
+
* @param subscribable - An object with a subscribe method
|
|
9
|
+
* @returns An observable that wraps values in Result type
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* // Explanation:
|
|
14
|
+
* // - fromSubscribable converts any subscribable object into a SynState Observable
|
|
15
|
+
* // - Works with objects that have a subscribe(onNext, onError, onComplete) method
|
|
16
|
+
* // - Wraps values in Result type for error handling
|
|
17
|
+
* // - Useful for integrating with other reactive libraries or custom subscribables
|
|
18
|
+
*
|
|
19
|
+
* // Example: Converting a custom subscribable
|
|
20
|
+
* const customSubscribable = {
|
|
21
|
+
* subscribe: (
|
|
22
|
+
* onNext: (value: number) => void,
|
|
23
|
+
* _onError?: (error: unknown) => void,
|
|
24
|
+
* onComplete?: () => void,
|
|
25
|
+
* ) => {
|
|
26
|
+
* setTimeout(() => {
|
|
27
|
+
* onNext(1);
|
|
28
|
+
*
|
|
29
|
+
* onNext(2);
|
|
30
|
+
*
|
|
31
|
+
* onNext(3);
|
|
32
|
+
*
|
|
33
|
+
* onComplete?.();
|
|
34
|
+
* }, 0);
|
|
35
|
+
*
|
|
36
|
+
* return { unsubscribe: () => {} };
|
|
37
|
+
* },
|
|
38
|
+
* };
|
|
39
|
+
*
|
|
40
|
+
* const observable$ = fromSubscribable<number>(customSubscribable);
|
|
41
|
+
*
|
|
42
|
+
* const mut_history: number[] = [];
|
|
43
|
+
*
|
|
44
|
+
* await new Promise<void>((resolve) => {
|
|
45
|
+
* observable$.subscribe(
|
|
46
|
+
* (result) => {
|
|
47
|
+
* if (Result.isOk(result)) {
|
|
48
|
+
* mut_history.push(result.value);
|
|
49
|
+
* }
|
|
50
|
+
* },
|
|
51
|
+
* () => {
|
|
52
|
+
* resolve();
|
|
53
|
+
* },
|
|
54
|
+
* );
|
|
55
|
+
* });
|
|
56
|
+
*
|
|
57
|
+
* assert.deepStrictEqual(mut_history, [1, 2, 3]);
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
2
60
|
export declare const fromSubscribable: <A, E = unknown>(subscribable: Subscribable<A>) => FromSubscribableObservable<A, E>;
|
|
3
61
|
//# sourceMappingURL=from-subscribable.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"from-subscribable.d.mts","sourceRoot":"","sources":["../../../src/core/create/from-subscribable.mts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,CAAC,GAAG,OAAO,EAC7C,cAAc,YAAY,CAAC,CAAC,CAAC,KAC5B,0BAA0B,CAAC,CAAC,EAAE,CAAC,CACiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"from-subscribable.d.mts","sourceRoot":"","sources":["../../../src/core/create/from-subscribable.mts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,CAAC,GAAG,OAAO,EAC7C,cAAc,YAAY,CAAC,CAAC,CAAC,KAC5B,0BAA0B,CAAC,CAAC,EAAE,CAAC,CACiB,CAAC"}
|