@typed/fx 1.8.0 → 1.8.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/dist/RefSubject.d.ts.map +1 -1
- package/dist/RefSubject.js +4 -1
- package/dist/RefSubject.js.map +1 -1
- package/dist/catchAllCause.d.ts +1 -1
- package/dist/catchAllCause.d.ts.map +1 -1
- package/dist/catchAllCause.js +1 -1
- package/dist/catchAllCause.js.map +1 -1
- package/dist/cjs/RefSubject.d.ts.map +1 -1
- package/dist/cjs/RefSubject.js +3 -1
- package/dist/cjs/RefSubject.js.map +1 -1
- package/dist/cjs/catchAllCause.d.ts +1 -1
- package/dist/cjs/catchAllCause.d.ts.map +1 -1
- package/dist/cjs/catchAllCause.js +1 -1
- package/dist/cjs/catchAllCause.js.map +1 -1
- package/dist/cjs/exhaustMap.d.ts +1 -1
- package/dist/cjs/exhaustMap.d.ts.map +1 -1
- package/dist/cjs/exhaustMap.js +1 -1
- package/dist/cjs/exhaustMap.js.map +1 -1
- package/dist/cjs/exhaustMapCause.d.ts +1 -1
- package/dist/cjs/exhaustMapCause.d.ts.map +1 -1
- package/dist/cjs/exhaustMapCause.js +1 -1
- package/dist/cjs/exhaustMapCause.js.map +1 -1
- package/dist/cjs/exhaustMapLatest.d.ts +1 -1
- package/dist/cjs/exhaustMapLatest.d.ts.map +1 -1
- package/dist/cjs/exhaustMapLatest.js +1 -1
- package/dist/cjs/exhaustMapLatest.js.map +1 -1
- package/dist/cjs/exhaustMapLatestCause.d.ts +1 -1
- package/dist/cjs/exhaustMapLatestCause.d.ts.map +1 -1
- package/dist/cjs/exhaustMapLatestCause.js +1 -1
- package/dist/cjs/exhaustMapLatestCause.js.map +1 -1
- package/dist/cjs/flatMap.d.ts +1 -1
- package/dist/cjs/flatMap.d.ts.map +1 -1
- package/dist/cjs/flatMap.js +1 -1
- package/dist/cjs/flatMap.js.map +1 -1
- package/dist/cjs/fromEffect.d.ts +1 -1
- package/dist/cjs/fromEffect.d.ts.map +1 -1
- package/dist/cjs/fromEffect.js +1 -1
- package/dist/cjs/fromEffect.js.map +1 -1
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +4 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/reduce.d.ts +2 -1
- package/dist/cjs/reduce.d.ts.map +1 -1
- package/dist/cjs/reduce.js +5 -4
- package/dist/cjs/reduce.js.map +1 -1
- package/dist/cjs/switchMap.d.ts +1 -1
- package/dist/cjs/switchMap.d.ts.map +1 -1
- package/dist/cjs/switchMap.js +1 -1
- package/dist/cjs/switchMap.js.map +1 -1
- package/dist/cjs/switchMapCause.d.ts +1 -1
- package/dist/cjs/switchMapCause.d.ts.map +1 -1
- package/dist/cjs/switchMapCause.js +1 -1
- package/dist/cjs/switchMapCause.js.map +1 -1
- package/dist/cjs/switchMatch.d.ts +1 -1
- package/dist/cjs/switchMatch.d.ts.map +1 -1
- package/dist/cjs/switchMatch.js +1 -1
- package/dist/cjs/switchMatch.js.map +1 -1
- package/dist/exhaustMap.d.ts +1 -1
- package/dist/exhaustMap.d.ts.map +1 -1
- package/dist/exhaustMap.js +1 -1
- package/dist/exhaustMap.js.map +1 -1
- package/dist/exhaustMapCause.d.ts +1 -1
- package/dist/exhaustMapCause.d.ts.map +1 -1
- package/dist/exhaustMapCause.js +1 -1
- package/dist/exhaustMapCause.js.map +1 -1
- package/dist/exhaustMapLatest.d.ts +1 -1
- package/dist/exhaustMapLatest.d.ts.map +1 -1
- package/dist/exhaustMapLatest.js +1 -1
- package/dist/exhaustMapLatest.js.map +1 -1
- package/dist/exhaustMapLatestCause.d.ts +1 -1
- package/dist/exhaustMapLatestCause.d.ts.map +1 -1
- package/dist/exhaustMapLatestCause.js +1 -1
- package/dist/exhaustMapLatestCause.js.map +1 -1
- package/dist/flatMap.d.ts +1 -1
- package/dist/flatMap.d.ts.map +1 -1
- package/dist/flatMap.js +1 -1
- package/dist/flatMap.js.map +1 -1
- package/dist/fromEffect.d.ts +1 -1
- package/dist/fromEffect.d.ts.map +1 -1
- package/dist/fromEffect.js +1 -1
- package/dist/fromEffect.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/reduce.d.ts +2 -1
- package/dist/reduce.d.ts.map +1 -1
- package/dist/reduce.js +5 -4
- package/dist/reduce.js.map +1 -1
- package/dist/switchMap.d.ts +1 -1
- package/dist/switchMap.d.ts.map +1 -1
- package/dist/switchMap.js +1 -1
- package/dist/switchMap.js.map +1 -1
- package/dist/switchMapCause.d.ts +1 -1
- package/dist/switchMapCause.d.ts.map +1 -1
- package/dist/switchMapCause.js +1 -1
- package/dist/switchMapCause.js.map +1 -1
- package/dist/switchMatch.d.ts +1 -1
- package/dist/switchMatch.d.ts.map +1 -1
- package/dist/switchMatch.js +1 -1
- package/dist/switchMatch.js.map +1 -1
- package/dist/tsconfig.cjs.build.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/RefSubject.ts +8 -2
- package/src/catchAllCause.ts +1 -2
- package/src/exhaustMap.ts +1 -2
- package/src/exhaustMapCause.ts +1 -2
- package/src/exhaustMapLatest.ts +1 -2
- package/src/exhaustMapLatestCause.ts +1 -2
- package/src/flatMap.ts +1 -2
- package/src/fromEffect.ts +1 -2
- package/src/fromFxEffect.test.ts +16 -0
- package/src/gen.test.ts +29 -0
- package/src/index.ts +5 -0
- package/src/reduce.ts +14 -9
- package/src/switchMap.ts +1 -2
- package/src/switchMapCause.ts +1 -2
- package/src/switchMatch.ts +1 -2
- package/tsconfig.build.tsbuildinfo +1 -1
package/src/RefSubject.ts
CHANGED
|
@@ -12,6 +12,7 @@ import type { Context } from './externals.js'
|
|
|
12
12
|
import { Effect, Fiber, MutableRef, Option, Ref } from './externals.js'
|
|
13
13
|
import { hold, HoldFx } from './hold.js'
|
|
14
14
|
import { map } from './map.js'
|
|
15
|
+
import { multicast } from './multicast.js'
|
|
15
16
|
import { never } from './never.js'
|
|
16
17
|
import { switchMapEffect } from './switchMap.js'
|
|
17
18
|
|
|
@@ -570,13 +571,18 @@ class ComputedImpl<R, E, A, R2, E2, B> implements Computed<R | R2, E | E2, B> {
|
|
|
570
571
|
_A: identity,
|
|
571
572
|
}
|
|
572
573
|
|
|
574
|
+
readonly fx: Fx<R | R2, E | E2, B>
|
|
575
|
+
|
|
573
576
|
constructor(
|
|
574
577
|
readonly computed: Computed<R, E, A>,
|
|
575
578
|
readonly f: (a: A) => Effect.Effect<R2, E2, B>,
|
|
576
|
-
) {
|
|
579
|
+
) {
|
|
580
|
+
// Create a stable reference to derived Fx
|
|
581
|
+
this.fx = multicast(switchMapEffect(this.computed, this.f))
|
|
582
|
+
}
|
|
577
583
|
|
|
578
584
|
run<R3>(sink: Sink<R3, E | E2, B>) {
|
|
579
|
-
return
|
|
585
|
+
return this.fx.run(sink)
|
|
580
586
|
}
|
|
581
587
|
|
|
582
588
|
traced(trace: Trace): Fx<R | R2, E | E2, B> {
|
package/src/catchAllCause.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { pipe } from '@effect/data/Function'
|
|
2
2
|
|
|
3
|
-
import { Cause, Effect, Either, Fiber, Ref } from './externals.js'
|
|
4
|
-
|
|
5
3
|
import { Fx, Sink } from './Fx.js'
|
|
4
|
+
import { Cause, Effect, Either, Fiber, Ref } from './externals.js'
|
|
6
5
|
import { failCause } from './failCause.js'
|
|
7
6
|
import { fromEffect } from './fromEffect.js'
|
|
8
7
|
|
package/src/exhaustMap.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { pipe } from '@effect/data/Function'
|
|
2
2
|
|
|
3
|
-
import { Cause, Effect, Fiber, Ref } from './externals.js'
|
|
4
|
-
|
|
5
3
|
import { Fx, Sink } from './Fx.js'
|
|
4
|
+
import { Cause, Effect, Fiber, Ref } from './externals.js'
|
|
6
5
|
import { fromEffect } from './fromEffect.js'
|
|
7
6
|
|
|
8
7
|
export function exhaustMap<R, E, A, R2, E2, B>(
|
package/src/exhaustMapCause.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { pipe } from '@effect/data/Function'
|
|
2
2
|
|
|
3
|
-
import { Cause, Effect, Either, Fiber, Ref } from './externals.js'
|
|
4
|
-
|
|
5
3
|
import { Fx, Sink } from './Fx.js'
|
|
4
|
+
import { Cause, Effect, Either, Fiber, Ref } from './externals.js'
|
|
6
5
|
import { failCause } from './failCause.js'
|
|
7
6
|
import { fromEffect } from './fromEffect.js'
|
|
8
7
|
|
package/src/exhaustMapLatest.ts
CHANGED
|
@@ -2,9 +2,8 @@ import { pipe } from '@effect/data/Function'
|
|
|
2
2
|
import * as Option from '@effect/data/Option'
|
|
3
3
|
import type { Scope } from '@effect/io/Scope'
|
|
4
4
|
|
|
5
|
-
import { Cause, Effect, Fiber, Ref } from './externals.js'
|
|
6
|
-
|
|
7
5
|
import { Fx, Sink } from './Fx.js'
|
|
6
|
+
import { Cause, Effect, Fiber, Ref } from './externals.js'
|
|
8
7
|
import { fromEffect } from './fromEffect.js'
|
|
9
8
|
|
|
10
9
|
export function exhaustMapLatest<R, E, A, R2, E2, B>(
|
|
@@ -2,9 +2,8 @@ import { pipe } from '@effect/data/Function'
|
|
|
2
2
|
import * as Option from '@effect/data/Option'
|
|
3
3
|
import type { Scope } from '@effect/io/Scope'
|
|
4
4
|
|
|
5
|
-
import { Cause, Effect, Either, Fiber, Ref } from './externals.js'
|
|
6
|
-
|
|
7
5
|
import { Fx, Sink } from './Fx.js'
|
|
6
|
+
import { Cause, Effect, Either, Fiber, Ref } from './externals.js'
|
|
8
7
|
import { failCause } from './failCause.js'
|
|
9
8
|
import { fromEffect } from './fromEffect.js'
|
|
10
9
|
|
package/src/flatMap.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { pipe } from '@effect/data/Function'
|
|
2
2
|
|
|
3
|
-
import { Cause, Effect, Fiber, Ref } from './externals.js'
|
|
4
|
-
|
|
5
3
|
import { Fx, Sink } from './Fx.js'
|
|
4
|
+
import { Cause, Effect, Fiber, Ref } from './externals.js'
|
|
6
5
|
import { fromEffect } from './fromEffect.js'
|
|
7
6
|
|
|
8
7
|
export function flatMap<R, E, A, R2, E2, B>(
|
package/src/fromEffect.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { Effect } from './externals.js'
|
|
2
|
-
|
|
3
1
|
import { Fx } from './Fx.js'
|
|
2
|
+
import { Effect } from './externals.js'
|
|
4
3
|
|
|
5
4
|
export function fromEffect<R, E, A>(effect: Effect.Effect<R, E, A>): Fx<R, E, A> {
|
|
6
5
|
return Fx((sink) => Effect.matchCauseEffect(effect, sink.error, sink.event))
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { describe } from 'vitest'
|
|
2
|
+
|
|
3
|
+
import { Cause, Effect } from './externals.js'
|
|
4
|
+
import { fromFxEffect } from './fromFxEffect.js'
|
|
5
|
+
import { succeed } from './succeed.js'
|
|
6
|
+
import { testCause, testCollectAll } from './test-utils.js'
|
|
7
|
+
|
|
8
|
+
describe(__filename, () => {
|
|
9
|
+
describe(fromFxEffect.name, (): void => {
|
|
10
|
+
const value = Math.random()
|
|
11
|
+
|
|
12
|
+
testCollectAll('returns the output', fromFxEffect(Effect.succeed(succeed(value))), [value])
|
|
13
|
+
|
|
14
|
+
testCause('fails with the given Cause', fromFxEffect(Effect.fail(value)), Cause.fail(value))
|
|
15
|
+
})
|
|
16
|
+
})
|
package/src/gen.test.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { describe } from 'vitest'
|
|
2
|
+
|
|
3
|
+
import { Cause, Effect } from './externals.js'
|
|
4
|
+
import { gen } from './gen.js'
|
|
5
|
+
import { succeed } from './succeed.js'
|
|
6
|
+
import { testCause, testCollectAll } from './test-utils.js'
|
|
7
|
+
|
|
8
|
+
describe(__filename, () => {
|
|
9
|
+
describe(gen.name, () => {
|
|
10
|
+
const value = Math.random()
|
|
11
|
+
|
|
12
|
+
testCollectAll(
|
|
13
|
+
'returns the output',
|
|
14
|
+
// eslint-disable-next-line require-yield
|
|
15
|
+
gen(function* () {
|
|
16
|
+
return succeed(value)
|
|
17
|
+
}),
|
|
18
|
+
[value],
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
testCause(
|
|
22
|
+
'fails with the given Cause',
|
|
23
|
+
gen(function* ($) {
|
|
24
|
+
return yield* $(Effect.fail(value))
|
|
25
|
+
}),
|
|
26
|
+
Cause.fail(value),
|
|
27
|
+
)
|
|
28
|
+
})
|
|
29
|
+
})
|
package/src/index.ts
CHANGED
|
@@ -537,6 +537,11 @@ export const mergeAll: <FXS extends ReadonlyArray<Fx<any, any, any>>>(
|
|
|
537
537
|
internal.mergeAll(...fxs).traced(trace),
|
|
538
538
|
)
|
|
539
539
|
|
|
540
|
+
export const merge: {
|
|
541
|
+
<R2, E2, B>(other: Fx<R2, E2, B>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A | B>
|
|
542
|
+
<R, E, A, R2, E2, B>(fx: Fx<R, E, A>, other: Fx<R2, E2, B>): Fx<R | R2, E | E2, A | B>
|
|
543
|
+
} = dualWithTrace(2, (trace) => (fx, other) => internal.merge(fx, other).traced(trace))
|
|
544
|
+
|
|
540
545
|
export const multicast: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A> = methodWithTrace(
|
|
541
546
|
(trace) =>
|
|
542
547
|
<R, E, A>(fx: Fx<R, E, A>): Fx<R, E, A> =>
|
package/src/reduce.ts
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import { Fx
|
|
2
|
-
import { Effect } from './externals.js'
|
|
1
|
+
import { Fx } from './Fx.js'
|
|
2
|
+
import { Effect, Scope } from './externals.js'
|
|
3
|
+
import { observe } from './observe.js'
|
|
3
4
|
|
|
4
|
-
export function reduce<R, E, A, B>(
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
export function reduce<R, E, A, B>(
|
|
6
|
+
fx: Fx<R, E, A>,
|
|
7
|
+
b: B,
|
|
8
|
+
f: (b: B, a: A) => B,
|
|
9
|
+
): Effect.Effect<R | Scope.Scope, E, B> {
|
|
10
|
+
return Effect.gen(function* ($) {
|
|
11
|
+
let acc = b
|
|
8
12
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
yield* $(observe(fx, (a) => Effect.sync(() => (acc = f(acc, a)))))
|
|
14
|
+
|
|
15
|
+
return acc
|
|
16
|
+
})
|
|
12
17
|
}
|
package/src/switchMap.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { pipe } from '@effect/data/Function'
|
|
2
2
|
|
|
3
|
-
import { Cause, Effect, Fiber, RefS } from './externals.js'
|
|
4
|
-
|
|
5
3
|
import { Fx, Sink } from './Fx.js'
|
|
4
|
+
import { Cause, Effect, Fiber, RefS } from './externals.js'
|
|
6
5
|
import { fromEffect } from './fromEffect.js'
|
|
7
6
|
|
|
8
7
|
export function switchMap<R, E, A, R2, E2, B>(
|
package/src/switchMapCause.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { pipe } from '@effect/data/Function'
|
|
2
2
|
|
|
3
|
-
import { Cause, Effect, Either, Fiber, RefS } from './externals.js'
|
|
4
|
-
|
|
5
3
|
import { Fx, Sink } from './Fx.js'
|
|
4
|
+
import { Cause, Effect, Either, Fiber, RefS } from './externals.js'
|
|
6
5
|
import { failCause } from './failCause.js'
|
|
7
6
|
import { fromEffect } from './fromEffect.js'
|
|
8
7
|
|
package/src/switchMatch.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { pipe } from '@effect/data/Function'
|
|
2
2
|
|
|
3
|
-
import { Cause, Effect, Either, Fiber, RefS } from './externals.js'
|
|
4
|
-
|
|
5
3
|
import { Fx, Sink } from './Fx.js'
|
|
4
|
+
import { Cause, Effect, Either, Fiber, RefS } from './externals.js'
|
|
6
5
|
import { failCause } from './failCause.js'
|
|
7
6
|
import { fromEffect } from './fromEffect.js'
|
|
8
7
|
|