@typed/fx 0.0.13 → 0.0.15
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/.eslintcache +1 -1
- package/cjs/Fx.d.ts +6 -3
- package/cjs/Fx.d.ts.map +1 -1
- package/cjs/Fx.js.map +1 -1
- package/cjs/Subject.d.ts +8 -2
- package/cjs/Subject.d.ts.map +1 -1
- package/cjs/Subject.js +26 -9
- package/cjs/Subject.js.map +1 -1
- package/cjs/filterLoop.d.ts +6 -0
- package/cjs/filterLoop.d.ts.map +1 -1
- package/cjs/filterLoop.js +6 -0
- package/cjs/filterLoop.js.map +1 -1
- package/cjs/filterMap.d.ts +6 -0
- package/cjs/filterMap.d.ts.map +1 -1
- package/cjs/filterMap.js +6 -0
- package/cjs/filterMap.js.map +1 -1
- package/cjs/flatMap.js.map +1 -1
- package/cjs/fromEffect.d.ts.map +1 -1
- package/cjs/fromEffect.js +2 -1
- package/cjs/fromEffect.js.map +1 -1
- package/cjs/fromIterable.d.ts +3 -0
- package/cjs/fromIterable.d.ts.map +1 -1
- package/cjs/fromIterable.js +3 -0
- package/cjs/fromIterable.js.map +1 -1
- package/cjs/index.d.ts +1 -0
- package/cjs/index.d.ts.map +1 -1
- package/cjs/index.js +1 -0
- package/cjs/index.js.map +1 -1
- package/cjs/mapCause.js.map +1 -1
- package/cjs/multicast.d.ts +3 -0
- package/cjs/multicast.d.ts.map +1 -1
- package/cjs/multicast.js +3 -0
- package/cjs/multicast.js.map +1 -1
- package/cjs/runCollect.d.ts.map +1 -1
- package/cjs/runCollect.js +2 -1
- package/cjs/runCollect.js.map +1 -1
- package/cjs/runDrain.d.ts.map +1 -1
- package/cjs/runDrain.js +2 -1
- package/cjs/runDrain.js.map +1 -1
- package/cjs/runObserve.d.ts.map +1 -1
- package/cjs/runObserve.js +2 -1
- package/cjs/runObserve.js.map +1 -1
- package/cjs/snapshot.d.ts +1 -1
- package/cjs/snapshot.d.ts.map +1 -1
- package/cjs/snapshot.js +1 -1
- package/cjs/snapshot.js.map +1 -1
- package/cjs/struct.d.ts +3 -0
- package/cjs/struct.d.ts.map +1 -0
- package/cjs/struct.js +9 -0
- package/cjs/struct.js.map +1 -0
- package/cjs/withEmitter.d.ts +2 -6
- package/cjs/withEmitter.d.ts.map +1 -1
- package/cjs/withEmitter.js.map +1 -1
- package/esm/Fx.d.ts +6 -3
- package/esm/Fx.d.ts.map +1 -1
- package/esm/Fx.js.map +1 -1
- package/esm/Subject.d.ts +8 -2
- package/esm/Subject.d.ts.map +1 -1
- package/esm/Subject.js +26 -9
- package/esm/Subject.js.map +1 -1
- package/esm/filterLoop.d.ts +6 -0
- package/esm/filterLoop.d.ts.map +1 -1
- package/esm/filterLoop.js +6 -0
- package/esm/filterLoop.js.map +1 -1
- package/esm/filterMap.d.ts +6 -0
- package/esm/filterMap.d.ts.map +1 -1
- package/esm/filterMap.js +6 -0
- package/esm/filterMap.js.map +1 -1
- package/esm/flatMap.js.map +1 -1
- package/esm/fromEffect.d.ts.map +1 -1
- package/esm/fromEffect.js +1 -1
- package/esm/fromEffect.js.map +1 -1
- package/esm/fromIterable.d.ts +3 -0
- package/esm/fromIterable.d.ts.map +1 -1
- package/esm/fromIterable.js +3 -0
- package/esm/fromIterable.js.map +1 -1
- package/esm/index.d.ts +1 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -1
- package/esm/mapCause.js.map +1 -1
- package/esm/multicast.d.ts +3 -0
- package/esm/multicast.d.ts.map +1 -1
- package/esm/multicast.js +3 -0
- package/esm/multicast.js.map +1 -1
- package/esm/runCollect.d.ts.map +1 -1
- package/esm/runCollect.js +2 -1
- package/esm/runCollect.js.map +1 -1
- package/esm/runDrain.d.ts.map +1 -1
- package/esm/runDrain.js +2 -1
- package/esm/runDrain.js.map +1 -1
- package/esm/runObserve.d.ts.map +1 -1
- package/esm/runObserve.js +2 -1
- package/esm/runObserve.js.map +1 -1
- package/esm/snapshot.d.ts +1 -1
- package/esm/snapshot.d.ts.map +1 -1
- package/esm/snapshot.js +1 -1
- package/esm/snapshot.js.map +1 -1
- package/esm/struct.d.ts +3 -0
- package/esm/struct.d.ts.map +1 -0
- package/esm/struct.js +5 -0
- package/esm/struct.js.map +1 -0
- package/esm/withEmitter.d.ts +2 -6
- package/esm/withEmitter.d.ts.map +1 -1
- package/esm/withEmitter.js.map +1 -1
- package/package.json +11 -1
- package/src/Fx.ts +12 -4
- package/src/Subject.test.ts +28 -0
- package/src/Subject.ts +38 -12
- package/src/filterLoop.ts +8 -0
- package/src/filterMap.ts +8 -0
- package/src/flatMap.ts +4 -1
- package/src/fromEffect.ts +2 -2
- package/src/fromIterable.ts +4 -0
- package/src/index.ts +1 -0
- package/src/mapCause.ts +4 -1
- package/src/multicast.ts +4 -0
- package/src/runCollect.ts +2 -0
- package/src/runDrain.ts +2 -0
- package/src/runObserve.ts +2 -0
- package/src/snapshot.ts +5 -9
- package/src/struct.ts +24 -0
- package/src/withEmitter.ts +2 -6
package/src/multicast.ts
CHANGED
|
@@ -20,6 +20,10 @@ export interface MulticastObserver<E, A> {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
export class Multicast<R, E, A> implements Fx<R, E, A>, Emitter<never, E, A> {
|
|
23
|
+
readonly _R!: () => R
|
|
24
|
+
readonly _E!: () => E
|
|
25
|
+
readonly _A!: () => A
|
|
26
|
+
|
|
23
27
|
protected observers: MulticastObserver<E, A>[] = []
|
|
24
28
|
protected fiber: Fiber.Fiber<never, unknown> | undefined
|
|
25
29
|
|
package/src/runCollect.ts
CHANGED
|
@@ -2,6 +2,7 @@ import * as Effect from '@effect/core/io/Effect'
|
|
|
2
2
|
import { pipe } from '@fp-ts/data/Function'
|
|
3
3
|
|
|
4
4
|
import { Fx } from './Fx.js'
|
|
5
|
+
import { onEarlyExitFailure } from './_internal.js'
|
|
5
6
|
import { runObserve } from './runObserve.js'
|
|
6
7
|
|
|
7
8
|
export function runCollect<R, E, A>(fx: Fx<R, E, A>): Effect.Effect<R, E, ReadonlyArray<A>> {
|
|
@@ -11,6 +12,7 @@ export function runCollect<R, E, A>(fx: Fx<R, E, A>): Effect.Effect<R, E, Readon
|
|
|
11
12
|
pipe(
|
|
12
13
|
fx,
|
|
13
14
|
runObserve((a) => Effect.sync(() => values.push(a))),
|
|
15
|
+
onEarlyExitFailure(Effect.unit),
|
|
14
16
|
Effect.map(() => values),
|
|
15
17
|
),
|
|
16
18
|
),
|
package/src/runDrain.ts
CHANGED
|
@@ -3,6 +3,7 @@ import * as Effect from '@effect/core/io/Effect'
|
|
|
3
3
|
import { pipe } from '@fp-ts/data/Function'
|
|
4
4
|
|
|
5
5
|
import { Fx } from './Fx.js'
|
|
6
|
+
import { onEarlyExitFailure } from './_internal.js'
|
|
6
7
|
|
|
7
8
|
export function runDrain<R, E, A>(fx: Fx<R, E, A>): Effect.Effect<R, E, void> {
|
|
8
9
|
return pipe(
|
|
@@ -16,6 +17,7 @@ export function runDrain<R, E, A>(fx: Fx<R, E, A>): Effect.Effect<R, E, void> {
|
|
|
16
17
|
}),
|
|
17
18
|
Effect.forkScoped,
|
|
18
19
|
Effect.zipRight(deferred.await),
|
|
20
|
+
onEarlyExitFailure(Effect.sync(() => deferred.succeed(undefined))),
|
|
19
21
|
),
|
|
20
22
|
),
|
|
21
23
|
Effect.scoped,
|
package/src/runObserve.ts
CHANGED
|
@@ -3,6 +3,7 @@ import * as Effect from '@effect/core/io/Effect'
|
|
|
3
3
|
import { flow, pipe } from '@fp-ts/data/Function'
|
|
4
4
|
|
|
5
5
|
import { Emitter, Fx } from './Fx.js'
|
|
6
|
+
import { onEarlyExitFailure } from './_internal.js'
|
|
6
7
|
|
|
7
8
|
export function runObserve<A, R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, B>) {
|
|
8
9
|
return <R, E>(fx: Fx<R, E, A>): Effect.Effect<R | R2, E | E2, void> =>
|
|
@@ -26,6 +27,7 @@ export function runObserve<A, R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, B>)
|
|
|
26
27
|
),
|
|
27
28
|
),
|
|
28
29
|
Effect.flatMap((deferred) => deferred.await),
|
|
30
|
+
onEarlyExitFailure(Effect.unit),
|
|
29
31
|
Effect.scoped,
|
|
30
32
|
)
|
|
31
33
|
}
|
package/src/snapshot.ts
CHANGED
|
@@ -5,24 +5,20 @@ import * as Maybe from '@tsplus/stdlib/data/Maybe'
|
|
|
5
5
|
|
|
6
6
|
import { Emitter, Fx } from './Fx.js'
|
|
7
7
|
|
|
8
|
-
export function snapshot<R2, E2, B, A,
|
|
9
|
-
return <R, E>(sampler: Fx<R, E, A>): Fx<R
|
|
10
|
-
snapshot_(sampler, sampled, f)
|
|
8
|
+
export function snapshot<R2, E2, B, A, C>(sampled: Fx<R2, E2, B>, f: (b: B, a: A) => C) {
|
|
9
|
+
return <R, E>(sampler: Fx<R, E, A>): Fx<R | R2, E | E2, C> => snapshot_(sampler, sampled, f)
|
|
11
10
|
}
|
|
12
11
|
|
|
13
12
|
export function sample<R2, E2, B>(sampled: Fx<R2, E2, B>) {
|
|
14
13
|
return <R, E, A>(sampler: Fx<R, E, A>): Fx<R | R2, E | E2, readonly [A, B]> =>
|
|
15
|
-
|
|
16
|
-
sampler,
|
|
17
|
-
snapshot(sampled, (b, a) => [a, b]),
|
|
18
|
-
)
|
|
14
|
+
snapshot_(sampler, sampled, (b, a) => [a, b])
|
|
19
15
|
}
|
|
20
16
|
|
|
21
|
-
function snapshot_<R, E, A, R2, E2, B,
|
|
17
|
+
function snapshot_<R, E, A, R2, E2, B, C>(
|
|
22
18
|
sampler: Fx<R, E, A>,
|
|
23
19
|
sampled: Fx<R2, E2, B>,
|
|
24
20
|
f: (b: B, a: A) => C,
|
|
25
|
-
): Fx<R | R2
|
|
21
|
+
): Fx<R | R2, E | E2, C> {
|
|
26
22
|
return Fx((emitter) =>
|
|
27
23
|
pipe(
|
|
28
24
|
Effect.sync(() => new AtomicReference<Maybe.Maybe<B>>(Maybe.none)),
|
package/src/struct.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { pipe } from '@fp-ts/data/Function'
|
|
2
|
+
|
|
3
|
+
import { Fx } from './Fx.js'
|
|
4
|
+
import { combineAll } from './combine.js'
|
|
5
|
+
import { map } from './filterMap.js'
|
|
6
|
+
|
|
7
|
+
export const struct = <Props extends Readonly<Record<string, Fx<any, any, any>>>>(
|
|
8
|
+
props: Props,
|
|
9
|
+
): Fx<
|
|
10
|
+
Fx.ResourcesOf<Props[string]>,
|
|
11
|
+
Fx.ErrorsOf<Props[string]>,
|
|
12
|
+
{ readonly [K in keyof Props]: Fx.OutputOf<Props[K]> }
|
|
13
|
+
> =>
|
|
14
|
+
pipe(
|
|
15
|
+
combineAll(
|
|
16
|
+
Object.entries(props).map(([key, fx]) =>
|
|
17
|
+
pipe(
|
|
18
|
+
fx,
|
|
19
|
+
map((value) => ({ [key]: value })),
|
|
20
|
+
),
|
|
21
|
+
),
|
|
22
|
+
),
|
|
23
|
+
map((values) => Object.assign({}, ...values)),
|
|
24
|
+
)
|
package/src/withEmitter.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Cause } from '@effect/core/io/Cause'
|
|
2
1
|
import * as Effect from '@effect/core/io/Effect'
|
|
3
2
|
import * as Exit from '@effect/core/io/Exit'
|
|
4
3
|
import { unsafeForkUnstarted } from '@effect/core/io/Fiber/_internal/runtime'
|
|
@@ -6,13 +5,10 @@ import { Scope } from '@effect/core/io/Scope'
|
|
|
6
5
|
import { flow, pipe } from '@fp-ts/data/Function'
|
|
7
6
|
|
|
8
7
|
import { Emitter, Fx } from './Fx.js'
|
|
8
|
+
import type { SubjectEmitter } from './Subject.js'
|
|
9
9
|
|
|
10
10
|
export function withEmitter<R, E, A>(
|
|
11
|
-
f: (
|
|
12
|
-
readonly emit: (a: A) => void
|
|
13
|
-
readonly failCause: (cause: Cause<E>) => void
|
|
14
|
-
readonly end: () => void
|
|
15
|
-
}) => Effect.Canceler<R>,
|
|
11
|
+
f: (emitter: SubjectEmitter<E, A>) => Effect.Canceler<R>,
|
|
16
12
|
): Fx<R, E, A> {
|
|
17
13
|
return Fx<R, E, A>(<R2>(sink: Emitter<R2, E, A>) => {
|
|
18
14
|
return Effect.withFiberRuntime<R | R2 | Scope, never, unknown>((fiber, status) => {
|