synstate 1.0.2 → 2.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 +9 -10
- package/dist/core/class/child-observable-class.d.mts.map +1 -1
- package/dist/core/class/child-observable-class.mjs +148 -140
- package/dist/core/class/child-observable-class.mjs.map +1 -1
- package/dist/core/class/observable-base-class.d.mts.map +1 -1
- package/dist/core/class/observable-base-class.mjs +111 -107
- package/dist/core/class/observable-base-class.mjs.map +1 -1
- package/dist/core/class/root-observable-class.d.mts.map +1 -1
- package/dist/core/class/root-observable-class.mjs +32 -24
- package/dist/core/class/root-observable-class.mjs.map +1 -1
- package/dist/core/combine/combine.d.mts +3 -3
- package/dist/core/combine/combine.d.mts.map +1 -1
- package/dist/core/combine/combine.mjs +31 -113
- package/dist/core/combine/combine.mjs.map +1 -1
- package/dist/core/combine/merge.d.mts +2 -2
- package/dist/core/combine/merge.d.mts.map +1 -1
- package/dist/core/combine/merge.mjs +21 -69
- package/dist/core/combine/merge.mjs.map +1 -1
- package/dist/core/combine/zip.d.mts +2 -2
- package/dist/core/combine/zip.d.mts.map +1 -1
- package/dist/core/combine/zip.mjs +34 -79
- package/dist/core/combine/zip.mjs.map +1 -1
- package/dist/core/create/counter.d.mts +1 -1
- package/dist/core/create/counter.d.mts.map +1 -1
- package/dist/core/create/counter.mjs +45 -84
- package/dist/core/create/counter.mjs.map +1 -1
- package/dist/core/create/from-abortable-promise.d.mts.map +1 -1
- package/dist/core/create/from-abortable-promise.mjs +29 -61
- package/dist/core/create/from-abortable-promise.mjs.map +1 -1
- package/dist/core/create/from-promise.d.mts.map +1 -1
- package/dist/core/create/from-promise.mjs +17 -66
- package/dist/core/create/from-promise.mjs.map +1 -1
- package/dist/core/create/from-subscribable.d.mts.map +1 -1
- package/dist/core/create/from-subscribable.mjs +18 -69
- package/dist/core/create/from-subscribable.mjs.map +1 -1
- package/dist/core/create/just.d.mts.map +1 -1
- package/dist/core/create/just.mjs +5 -35
- package/dist/core/create/just.mjs.map +1 -1
- package/dist/core/create/source.mjs +10 -13
- package/dist/core/create/source.mjs.map +1 -1
- package/dist/core/create/timer.d.mts.map +1 -1
- package/dist/core/create/timer.mjs +32 -68
- package/dist/core/create/timer.mjs.map +1 -1
- package/dist/core/operators/audit.d.mts.map +1 -1
- package/dist/core/operators/audit.mjs +39 -133
- package/dist/core/operators/audit.mjs.map +1 -1
- package/dist/core/operators/debounce.d.mts.map +1 -1
- package/dist/core/operators/debounce.mjs +36 -119
- package/dist/core/operators/debounce.mjs.map +1 -1
- package/dist/core/operators/filter.mjs +22 -25
- package/dist/core/operators/filter.mjs.map +1 -1
- package/dist/core/operators/map.d.mts.map +1 -1
- package/dist/core/operators/map.mjs +28 -61
- package/dist/core/operators/map.mjs.map +1 -1
- package/dist/core/operators/merge-map.d.mts +1 -1
- package/dist/core/operators/merge-map.d.mts.map +1 -1
- package/dist/core/operators/merge-map.mjs +34 -130
- package/dist/core/operators/merge-map.mjs.map +1 -1
- package/dist/core/operators/pairwise.d.mts +3 -2
- package/dist/core/operators/pairwise.d.mts.map +1 -1
- package/dist/core/operators/pairwise.mjs +19 -75
- package/dist/core/operators/pairwise.mjs.map +1 -1
- package/dist/core/operators/scan.d.mts.map +1 -1
- package/dist/core/operators/scan.mjs +16 -67
- package/dist/core/operators/scan.mjs.map +1 -1
- package/dist/core/operators/skip-if-no-change.d.mts +1 -1
- package/dist/core/operators/skip-if-no-change.d.mts.map +1 -1
- package/dist/core/operators/skip-if-no-change.mjs +28 -92
- package/dist/core/operators/skip-if-no-change.mjs.map +1 -1
- package/dist/core/operators/skip-until.d.mts.map +1 -1
- package/dist/core/operators/skip-until.mjs +23 -72
- package/dist/core/operators/skip-until.mjs.map +1 -1
- package/dist/core/operators/skip-while.d.mts.map +1 -1
- package/dist/core/operators/skip-while.mjs +26 -88
- package/dist/core/operators/skip-while.mjs.map +1 -1
- package/dist/core/operators/switch-map.d.mts.map +1 -1
- package/dist/core/operators/switch-map.mjs +31 -124
- 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 +28 -69
- package/dist/core/operators/take-until.mjs.map +1 -1
- package/dist/core/operators/take-while.d.mts.map +1 -1
- package/dist/core/operators/take-while.mjs +23 -83
- package/dist/core/operators/take-while.mjs.map +1 -1
- package/dist/core/operators/throttle.d.mts.map +1 -1
- package/dist/core/operators/throttle.mjs +38 -115
- package/dist/core/operators/throttle.mjs.map +1 -1
- package/dist/core/operators/with-buffered-from.d.mts +1 -1
- package/dist/core/operators/with-buffered-from.d.mts.map +1 -1
- package/dist/core/operators/with-buffered-from.mjs +37 -90
- package/dist/core/operators/with-buffered-from.mjs.map +1 -1
- package/dist/core/operators/with-current-value-from.d.mts +1 -1
- package/dist/core/operators/with-current-value-from.d.mts.map +1 -1
- package/dist/core/operators/with-current-value-from.mjs +23 -84
- package/dist/core/operators/with-current-value-from.mjs.map +1 -1
- package/dist/core/operators/with-initial-value.d.mts.map +1 -1
- package/dist/core/operators/with-initial-value.mjs +13 -58
- package/dist/core/operators/with-initial-value.mjs.map +1 -1
- package/dist/core/predefined/operators/attach-index.d.mts +1 -1
- package/dist/core/predefined/operators/attach-index.d.mts.map +1 -1
- package/dist/core/predefined/operators/attach-index.mjs +0 -53
- package/dist/core/predefined/operators/attach-index.mjs.map +1 -1
- package/dist/core/predefined/operators/map-optional.d.mts.map +1 -1
- package/dist/core/predefined/operators/map-optional.mjs +1 -48
- package/dist/core/predefined/operators/map-optional.mjs.map +1 -1
- package/dist/core/predefined/operators/map-result-err.d.mts.map +1 -1
- package/dist/core/predefined/operators/map-result-err.mjs +1 -48
- package/dist/core/predefined/operators/map-result-err.mjs.map +1 -1
- package/dist/core/predefined/operators/map-result-ok.d.mts.map +1 -1
- package/dist/core/predefined/operators/map-result-ok.mjs +1 -48
- package/dist/core/predefined/operators/map-result-ok.mjs.map +1 -1
- package/dist/core/predefined/operators/map-to.d.mts.map +1 -1
- package/dist/core/predefined/operators/map-to.mjs +0 -40
- package/dist/core/predefined/operators/map-to.mjs.map +1 -1
- package/dist/core/predefined/operators/pluck.d.mts +1 -1
- package/dist/core/predefined/operators/pluck.d.mts.map +1 -1
- package/dist/core/predefined/operators/pluck.mjs +0 -43
- package/dist/core/predefined/operators/pluck.mjs.map +1 -1
- package/dist/core/predefined/operators/skip.d.mts.map +1 -1
- package/dist/core/predefined/operators/skip.mjs +0 -47
- package/dist/core/predefined/operators/skip.mjs.map +1 -1
- package/dist/core/predefined/operators/take.d.mts.map +1 -1
- package/dist/core/predefined/operators/take.mjs +0 -41
- package/dist/core/predefined/operators/take.mjs.map +1 -1
- package/dist/core/predefined/operators/unwrap-optional.mjs +4 -43
- package/dist/core/predefined/operators/unwrap-optional.mjs.map +1 -1
- package/dist/core/predefined/operators/unwrap-result-err.mjs +0 -40
- package/dist/core/predefined/operators/unwrap-result-err.mjs.map +1 -1
- package/dist/core/predefined/operators/unwrap-result-ok.mjs +4 -43
- package/dist/core/predefined/operators/unwrap-result-ok.mjs.map +1 -1
- package/dist/core/types/observable-family.d.mts +10 -10
- package/dist/core/types/observable-family.d.mts.map +1 -1
- package/dist/core/types/observable.d.mts.map +1 -1
- package/dist/core/types/observable.mjs +3 -5
- package/dist/core/types/observable.mjs.map +1 -1
- package/dist/core/types/types.d.mts +2 -1
- package/dist/core/types/types.d.mts.map +1 -1
- package/dist/core/utils/id-maker.mjs +5 -6
- package/dist/core/utils/id-maker.mjs.map +1 -1
- package/dist/core/utils/max-depth.d.mts.map +1 -1
- package/dist/core/utils/max-depth.mjs +1 -3
- package/dist/core/utils/max-depth.mjs.map +1 -1
- package/dist/core/utils/observable-utils.d.mts.map +1 -1
- package/dist/core/utils/observable-utils.mjs +3 -2
- package/dist/core/utils/observable-utils.mjs.map +1 -1
- package/dist/core/utils/utils.d.mts.map +1 -1
- package/dist/core/utils/utils.mjs +23 -30
- package/dist/core/utils/utils.mjs.map +1 -1
- package/dist/utils/collect-to-array.d.mts.map +1 -1
- package/dist/utils/collect-to-array.mjs +9 -6
- package/dist/utils/collect-to-array.mjs.map +1 -1
- package/dist/utils/create-boolean-state.d.mts +1 -1
- package/dist/utils/create-boolean-state.d.mts.map +1 -1
- package/dist/utils/create-boolean-state.mjs +18 -46
- package/dist/utils/create-boolean-state.mjs.map +1 -1
- package/dist/utils/create-event-emitter.mjs +10 -64
- package/dist/utils/create-event-emitter.mjs.map +1 -1
- package/dist/utils/create-reducer.d.mts +1 -1
- package/dist/utils/create-reducer.d.mts.map +1 -1
- package/dist/utils/create-reducer.mjs +8 -52
- package/dist/utils/create-reducer.mjs.map +1 -1
- package/dist/utils/create-state.d.mts +1 -1
- package/dist/utils/create-state.d.mts.map +1 -1
- package/dist/utils/create-state.mjs +23 -53
- package/dist/utils/create-state.mjs.map +1 -1
- package/package.json +13 -14
- package/src/core/class/child-observable-class.mts +1 -1
- package/src/core/class/observable-base-class.mts +16 -16
- package/src/core/combine/combine.mts +38 -16
- package/src/core/combine/merge.mts +3 -3
- package/src/core/combine/zip.mts +24 -13
- package/src/core/create/counter.mts +11 -9
- package/src/core/create/counter.test.mts +11 -0
- package/src/core/create/timer.mts +6 -6
- package/src/core/create/timer.test.mts +11 -0
- package/src/core/operators/audit-throttle-teardown.test.mts +21 -0
- package/src/core/operators/audit.mts +6 -6
- package/src/core/operators/debounce.mts +6 -6
- package/src/core/operators/pairwise.mts +10 -5
- package/src/core/operators/skip-while.mts +1 -5
- package/src/core/operators/skip-while.test.mts +20 -0
- package/src/core/operators/throttle.mts +6 -6
- package/src/core/operators/with-buffered-from.mts +4 -4
- package/src/core/predefined/operators/map-optional.mts +1 -2
- package/src/core/predefined/operators/map-result-err.mts +1 -1
- package/src/core/predefined/operators/map-result-ok.mts +1 -1
- package/src/core/types/observable-family.mts +12 -11
- package/src/core/types/observable.mts +5 -7
- package/src/core/types/types.mts +2 -1
- package/src/core/utils/max-depth.mts +5 -1
- package/src/core/utils/utils.mts +1 -1
- package/src/utils/create-boolean-state.mts +1 -1
- package/src/utils/create-reducer.mts +1 -1
- package/src/utils/create-state.mts +1 -1
|
@@ -117,6 +117,12 @@ class ThrottleObservableClass<A>
|
|
|
117
117
|
this.#milliSeconds = milliSeconds;
|
|
118
118
|
}
|
|
119
119
|
|
|
120
|
+
#resetTimer(): void {
|
|
121
|
+
if (this.#mut_timerId !== undefined) {
|
|
122
|
+
clearTimeout(this.#mut_timerId);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
120
126
|
override tryUpdate(updateToken: UpdateToken): void {
|
|
121
127
|
const par = this.parents[0];
|
|
122
128
|
|
|
@@ -140,12 +146,6 @@ class ThrottleObservableClass<A>
|
|
|
140
146
|
}, this.#milliSeconds);
|
|
141
147
|
}
|
|
142
148
|
|
|
143
|
-
#resetTimer(): void {
|
|
144
|
-
if (this.#mut_timerId !== undefined) {
|
|
145
|
-
clearTimeout(this.#mut_timerId);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
149
|
override complete(): void {
|
|
150
150
|
this.#resetTimer();
|
|
151
151
|
|
|
@@ -105,6 +105,10 @@ class WithBufferedFromObservableClass<A, B>
|
|
|
105
105
|
});
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
+
#clearBuffer(): void {
|
|
109
|
+
this.#mut_bufferedValues = [];
|
|
110
|
+
}
|
|
111
|
+
|
|
108
112
|
override tryUpdate(updateToken: UpdateToken): void {
|
|
109
113
|
const par = this.parents[0];
|
|
110
114
|
|
|
@@ -118,8 +122,4 @@ class WithBufferedFromObservableClass<A, B>
|
|
|
118
122
|
|
|
119
123
|
this.#clearBuffer();
|
|
120
124
|
}
|
|
121
|
-
|
|
122
|
-
#clearBuffer(): void {
|
|
123
|
-
this.#mut_bufferedValues = [];
|
|
124
|
-
}
|
|
125
125
|
}
|
|
@@ -51,5 +51,4 @@ import { type KeepInitialValueOperator } from '../../types/index.mjs';
|
|
|
51
51
|
*/
|
|
52
52
|
export const mapOptional = <O extends UnknownOptional, B>(
|
|
53
53
|
mapFn: (x: Optional.Unwrap<O>) => B,
|
|
54
|
-
): KeepInitialValueOperator<O, Optional<B>> =>
|
|
55
|
-
map((a) => Optional.map(a, mapFn));
|
|
54
|
+
): KeepInitialValueOperator<O, Optional<B>> => map(Optional.map(mapFn));
|
|
@@ -52,4 +52,4 @@ import { type KeepInitialValueOperator } from '../../types/index.mjs';
|
|
|
52
52
|
export const mapResultErr = <R extends UnknownResult, E2>(
|
|
53
53
|
mapFn: (x: Result.UnwrapErr<R>) => E2,
|
|
54
54
|
): KeepInitialValueOperator<R, Result<Result.UnwrapOk<R>, E2>> =>
|
|
55
|
-
map(
|
|
55
|
+
map(Result.mapErr(mapFn));
|
|
@@ -52,4 +52,4 @@ import { type KeepInitialValueOperator } from '../../types/index.mjs';
|
|
|
52
52
|
export const mapResultOk = <R extends UnknownResult, S2>(
|
|
53
53
|
mapFn: (x: Result.UnwrapOk<R>) => S2,
|
|
54
54
|
): KeepInitialValueOperator<R, Result<S2, Result.UnwrapErr<R>>> =>
|
|
55
|
-
map(
|
|
55
|
+
map(Result.map(mapFn));
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { expectType, type Result } from 'ts-data-forge';
|
|
2
2
|
import {
|
|
3
3
|
type ArrayElement,
|
|
4
|
-
type
|
|
4
|
+
type FixedLengthTuple,
|
|
5
|
+
type NonEmptyTuple,
|
|
5
6
|
type SafeUint,
|
|
6
7
|
} from 'ts-type-forge';
|
|
7
8
|
import {
|
|
@@ -63,8 +64,8 @@ export type ScanOperatorObservable<A, B> = InitializedSyncChildObservable<
|
|
|
63
64
|
namespace SynStateInternals {
|
|
64
65
|
type Cast<A> = A extends NonEmptyUnknownList ? A : never;
|
|
65
66
|
|
|
66
|
-
type EveryInitialized<OS extends
|
|
67
|
-
OS extends
|
|
67
|
+
type EveryInitialized<OS extends NonEmptyTuple<Observable<unknown>>> =
|
|
68
|
+
OS extends NonEmptyTuple<InitializedObservable<unknown>> ? true : false;
|
|
68
69
|
|
|
69
70
|
type IsInitialized<O> = readonly [O] extends readonly [
|
|
70
71
|
InitializedObservable<unknown>,
|
|
@@ -83,7 +84,7 @@ namespace SynStateInternals {
|
|
|
83
84
|
// union distribution
|
|
84
85
|
LogicalValue<OS extends OS ? IsInitialized<OS> : never>;
|
|
85
86
|
|
|
86
|
-
type SomeInitialized<OS extends
|
|
87
|
+
type SomeInitialized<OS extends NonEmptyTuple<Observable<unknown>>> =
|
|
87
88
|
SomeInitializedImpl<OS[number]>;
|
|
88
89
|
|
|
89
90
|
expectType<EveryInitialized<readonly [Observable<1>]>, false>('=');
|
|
@@ -125,7 +126,7 @@ namespace SynStateInternals {
|
|
|
125
126
|
SyncChildObservable<A, A>;
|
|
126
127
|
|
|
127
128
|
export type CombineObservableRefinedImpl<
|
|
128
|
-
OS extends
|
|
129
|
+
OS extends NonEmptyTuple<Observable<unknown>>,
|
|
129
130
|
> =
|
|
130
131
|
EveryInitialized<OS> extends true
|
|
131
132
|
? InitializedCombineObservableImpl<Cast<Unwrap<OS>>>
|
|
@@ -138,7 +139,7 @@ namespace SynStateInternals {
|
|
|
138
139
|
SyncChildObservable<A, A>;
|
|
139
140
|
|
|
140
141
|
export type ZipObservableRefinedImpl<
|
|
141
|
-
OS extends
|
|
142
|
+
OS extends NonEmptyTuple<Observable<unknown>>,
|
|
142
143
|
> =
|
|
143
144
|
EveryInitialized<OS> extends true
|
|
144
145
|
? InitializedZipObservableImpl<Cast<Unwrap<OS>>>
|
|
@@ -151,7 +152,7 @@ namespace SynStateInternals {
|
|
|
151
152
|
SyncChildObservable<ArrayElement<P>, P>;
|
|
152
153
|
|
|
153
154
|
export type MergeObservableRefinedImpl<
|
|
154
|
-
OS extends
|
|
155
|
+
OS extends NonEmptyTuple<Observable<unknown>>,
|
|
155
156
|
> =
|
|
156
157
|
SomeInitialized<OS> extends true
|
|
157
158
|
? InitializedMergeObservableImpl<Cast<Unwrap<OS>>>
|
|
@@ -162,27 +163,27 @@ export type CombineObservable<A extends NonEmptyUnknownList> =
|
|
|
162
163
|
SynStateInternals.CombineObservableImpl<A>;
|
|
163
164
|
|
|
164
165
|
export type CombineObservableRefined<
|
|
165
|
-
OS extends
|
|
166
|
+
OS extends NonEmptyTuple<Observable<unknown>>,
|
|
166
167
|
> = SynStateInternals.CombineObservableRefinedImpl<OS>;
|
|
167
168
|
|
|
168
169
|
export type ZipObservable<A extends NonEmptyUnknownList> =
|
|
169
170
|
SynStateInternals.ZipObservableImpl<A>;
|
|
170
171
|
|
|
171
172
|
export type ZipObservableRefined<
|
|
172
|
-
OS extends
|
|
173
|
+
OS extends NonEmptyTuple<Observable<unknown>>,
|
|
173
174
|
> = SynStateInternals.ZipObservableRefinedImpl<OS>;
|
|
174
175
|
|
|
175
176
|
export type MergeObservable<A extends NonEmptyUnknownList> =
|
|
176
177
|
SynStateInternals.MergeObservableImpl<A>;
|
|
177
178
|
|
|
178
179
|
export type MergeObservableRefined<
|
|
179
|
-
OS extends
|
|
180
|
+
OS extends NonEmptyTuple<Observable<unknown>>,
|
|
180
181
|
> = SynStateInternals.MergeObservableRefinedImpl<OS>;
|
|
181
182
|
|
|
182
183
|
export type MapOperatorObservable<A, B> = SyncChildObservable<B, readonly [A]>;
|
|
183
184
|
|
|
184
185
|
export type PairwiseOperatorObservable<A> = SyncChildObservable<
|
|
185
|
-
|
|
186
|
+
FixedLengthTuple<2, A>,
|
|
186
187
|
readonly [A]
|
|
187
188
|
>;
|
|
188
189
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { expectType, type Optional, type Some } from 'ts-data-forge';
|
|
2
|
-
import { type StrictOmit } from 'ts-type-forge';
|
|
2
|
+
import { type FixedLengthTuple, type StrictOmit } from 'ts-type-forge';
|
|
3
3
|
import { type ObservableId, type UpdateToken } from './id.mjs';
|
|
4
4
|
import { type ObservableKind } from './observable-kind.mjs';
|
|
5
5
|
import { type NonEmptyUnknownList, type Subscription } from './types.mjs';
|
|
@@ -128,9 +128,7 @@ export type InitializedRootObservable<A> =
|
|
|
128
128
|
ObservableTypeConverter.ToInitialized<A, RootObservable<A>>;
|
|
129
129
|
|
|
130
130
|
export type Observable<A> =
|
|
131
|
-
|
|
|
132
|
-
| RootObservable<A>
|
|
133
|
-
| SyncChildObservable<A>;
|
|
131
|
+
AsyncChildObservable<A> | RootObservable<A> | SyncChildObservable<A>;
|
|
134
132
|
|
|
135
133
|
export type InitializedObservable<A> =
|
|
136
134
|
| InitializedAsyncChildObservable<A>
|
|
@@ -209,11 +207,11 @@ expectType<
|
|
|
209
207
|
expectType<number, ObservableValue<Observable<string>>>('!<=');
|
|
210
208
|
|
|
211
209
|
expectType<
|
|
212
|
-
|
|
213
|
-
Wrap<
|
|
210
|
+
FixedLengthTuple<2, Observable<number>>,
|
|
211
|
+
Wrap<FixedLengthTuple<2, number>>
|
|
214
212
|
>('<=');
|
|
215
213
|
|
|
216
214
|
expectType<
|
|
217
215
|
readonly [Observable<number>, Observable<string>],
|
|
218
|
-
Wrap<
|
|
216
|
+
Wrap<FixedLengthTuple<2, number>>
|
|
219
217
|
>('!<=');
|
package/src/core/types/types.mts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { expectType, type Queue } from 'ts-data-forge';
|
|
2
|
+
import { type NonEmptyTuple } from 'ts-type-forge';
|
|
2
3
|
|
|
3
4
|
export type TupleToQueueTuple<T extends readonly unknown[]> = Readonly<{
|
|
4
5
|
[P in keyof T]: Queue<T[P]>;
|
|
5
6
|
}>;
|
|
6
7
|
|
|
7
|
-
export type NonEmptyUnknownList =
|
|
8
|
+
export type NonEmptyUnknownList = NonEmptyTuple<unknown>;
|
|
8
9
|
|
|
9
10
|
export type Subscriber<A> = Readonly<{
|
|
10
11
|
onNext: (v: A) => void;
|
|
@@ -3,5 +3,9 @@ import { type Observable } from '../types/index.mjs';
|
|
|
3
3
|
|
|
4
4
|
export const maxDepth = (parents: readonly Observable<unknown>[]): number =>
|
|
5
5
|
pipe(Arr.maxBy(parents, (p) => p.depth))
|
|
6
|
-
.
|
|
6
|
+
// Explicit return type + non-curried `Optional.unwrapOr` call: TypeScript
|
|
7
|
+
// 7 (native)'s inference for this chained generic call resolves to
|
|
8
|
+
// `unknown` without them, even though TypeScript <= 6.0's checker
|
|
9
|
+
// resolves this fine.
|
|
10
|
+
.mapOptional((o): number => o.depth)
|
|
7
11
|
.map(Optional.unwrapOr(0)).value;
|
package/src/core/utils/utils.mts
CHANGED