@typed/fx 1.15.4 → 1.16.1

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.
Files changed (67) hide show
  1. package/dist/Computed.js +2 -2
  2. package/dist/Computed.js.map +1 -1
  3. package/dist/Fx.d.ts +2 -1
  4. package/dist/Fx.d.ts.map +1 -1
  5. package/dist/Fx.js +10 -4
  6. package/dist/Fx.js.map +1 -1
  7. package/dist/RefSubject.d.ts.map +1 -1
  8. package/dist/RefSubject.js +2 -10
  9. package/dist/RefSubject.js.map +1 -1
  10. package/dist/cjs/Computed.js +2 -2
  11. package/dist/cjs/Computed.js.map +1 -1
  12. package/dist/cjs/Fx.d.ts +2 -1
  13. package/dist/cjs/Fx.d.ts.map +1 -1
  14. package/dist/cjs/Fx.js +10 -4
  15. package/dist/cjs/Fx.js.map +1 -1
  16. package/dist/cjs/RefSubject.d.ts.map +1 -1
  17. package/dist/cjs/RefSubject.js +2 -10
  18. package/dist/cjs/RefSubject.js.map +1 -1
  19. package/dist/cjs/data-first.d.ts +1 -0
  20. package/dist/cjs/data-first.d.ts.map +1 -1
  21. package/dist/cjs/data-first.js +1 -0
  22. package/dist/cjs/data-first.js.map +1 -1
  23. package/dist/cjs/fromEffect.d.ts.map +1 -1
  24. package/dist/cjs/fromEffect.js +5 -0
  25. package/dist/cjs/fromEffect.js.map +1 -1
  26. package/dist/cjs/index.d.ts +6 -11
  27. package/dist/cjs/index.d.ts.map +1 -1
  28. package/dist/cjs/index.js +3 -14
  29. package/dist/cjs/index.js.map +1 -1
  30. package/dist/cjs/multicast.d.ts +1 -0
  31. package/dist/cjs/multicast.d.ts.map +1 -1
  32. package/dist/cjs/multicast.js +5 -0
  33. package/dist/cjs/multicast.js.map +1 -1
  34. package/dist/cjs/promise.d.ts +6 -12
  35. package/dist/cjs/promise.d.ts.map +1 -1
  36. package/dist/cjs/promise.js +1 -25
  37. package/dist/cjs/promise.js.map +1 -1
  38. package/dist/data-first.d.ts +1 -0
  39. package/dist/data-first.d.ts.map +1 -1
  40. package/dist/data-first.js +1 -0
  41. package/dist/data-first.js.map +1 -1
  42. package/dist/fromEffect.d.ts.map +1 -1
  43. package/dist/fromEffect.js +5 -0
  44. package/dist/fromEffect.js.map +1 -1
  45. package/dist/index.d.ts +6 -11
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +1 -6
  48. package/dist/index.js.map +1 -1
  49. package/dist/multicast.d.ts +1 -0
  50. package/dist/multicast.d.ts.map +1 -1
  51. package/dist/multicast.js +5 -0
  52. package/dist/multicast.js.map +1 -1
  53. package/dist/promise.d.ts +6 -12
  54. package/dist/promise.d.ts.map +1 -1
  55. package/dist/promise.js +0 -18
  56. package/dist/promise.js.map +1 -1
  57. package/dist/tsconfig.cjs.build.tsbuildinfo +1 -1
  58. package/package.json +5 -5
  59. package/src/Computed.ts +2 -2
  60. package/src/Fx.ts +13 -5
  61. package/src/RefSubject.ts +8 -25
  62. package/src/data-first.ts +1 -0
  63. package/src/fromEffect.ts +6 -0
  64. package/src/index.ts +10 -32
  65. package/src/multicast.ts +6 -0
  66. package/src/promise.ts +7 -41
  67. package/tsconfig.build.tsbuildinfo +1 -1
package/src/RefSubject.ts CHANGED
@@ -199,12 +199,14 @@ function initializeFromContext<E, A>(ctx: RefSubjectContext<E, A>): Effect.Effec
199
199
  Effect.flatMap(Effect.forkIn(restore(ctx.initial), ctx.scope), (fiber) => {
200
200
  MutableRef.set(ctx.initializingFiberRef, Option.some(fiber))
201
201
 
202
- return Effect.tap(Fiber.join(fiber), (a) =>
203
- Effect.sync(() => {
204
- MutableRef.increment(ctx.version)
205
- MutableRef.set(ctx.currentRef, Option.some(a))
206
- MutableRef.set(ctx.initializingFiberRef, Option.none())
207
- }),
202
+ return Fiber.join(fiber).pipe(
203
+ Effect.tap((a) =>
204
+ Effect.sync(() => {
205
+ MutableRef.increment(ctx.version)
206
+ MutableRef.set(ctx.currentRef, Option.some(a))
207
+ }),
208
+ ),
209
+ Effect.ensuring(Effect.sync(() => MutableRef.set(ctx.initializingFiberRef, Option.none()))),
208
210
  )
209
211
  }),
210
212
  )
@@ -753,23 +755,4 @@ export function asRef<R, E, A>(fx: Fx<R, E, A>) {
753
755
  )
754
756
  }),
755
757
  )
756
-
757
- return Effect.gen(function* ($) {
758
- const deferred = yield* $(Deferred.make<E, A>())
759
- const ref = yield* $(makeRef(Deferred.await(deferred)))
760
-
761
- const onValue = (value: A) =>
762
- Effect.flatMap(Deferred.succeed(deferred, value), (closed) =>
763
- closed ? Effect.unit : ref.set(value),
764
- )
765
-
766
- yield* $(
767
- switchMatchCauseEffect(fx, ref.error, onValue),
768
- drain,
769
- Effect.catchAllCause(ref.error),
770
- Effect.forkScoped,
771
- )
772
-
773
- return ref
774
- })
775
758
  }
package/src/data-first.ts CHANGED
@@ -41,6 +41,7 @@ export * from './orElse.js'
41
41
  export * from './promise.js'
42
42
  export * from './provide.js'
43
43
  export * from './reduce.js'
44
+ export * from './RefArray.js'
44
45
  export * from './RefSubject.js'
45
46
  export * from './RefTransform.js'
46
47
  export * from './scan.js'
package/src/fromEffect.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { pipeArguments } from '@effect/data/Pipeable'
1
2
  import * as Effect from '@effect/io/Effect'
2
3
 
3
4
  import { Fx, FxTypeId, Sink } from './Fx.js'
@@ -14,4 +15,9 @@ class FromEffect<R, E, A> implements Fx<R, E, A> {
14
15
  run<R2>(sink: Sink<R2, E, A>): Effect.Effect<R | R2, never, void> {
15
16
  return Effect.matchCauseEffect(this.effect, { onFailure: sink.error, onSuccess: sink.event })
16
17
  }
18
+
19
+ pipe() {
20
+ // eslint-disable-next-line prefer-rest-params
21
+ return pipeArguments(this, arguments)
22
+ }
17
23
  }
package/src/index.ts CHANGED
@@ -606,52 +606,29 @@ export const onInterrupt: {
606
606
  ): Fx<R | R2, E | E2, A>
607
607
  } = dual(2, (fx, f) => internal.onInterrupt(fx, f))
608
608
 
609
- export const promise: <A>(f: () => Promise<A>) => Fx<never, never, A> = (f) => internal.promise(f)
609
+ export const promise: <A>(f: (signal: AbortSignal) => Promise<A>) => Fx<never, never, A> = (f) =>
610
+ internal.promise(f)
610
611
 
611
- export const promiseInterrupt: <A>(
612
- f: (signal: AbortSignal) => Promise<A>,
613
- ) => Fx<never, never, A> = (f) => internal.promiseInterrupt(f)
614
-
615
- export const tryPromise: <A>(f: () => Promise<A>) => Fx<never, unknown, A> = (f) =>
616
- internal.tryPromise(f)
617
-
618
- export const tryPromiseInterrupt: <A>(
619
- f: (signal: AbortSignal) => Promise<A>,
620
- ) => Fx<never, unknown, A> = (f) => internal.tryPromiseInterrupt(f)
612
+ export const tryPromise: <A>(f: (signal: AbortSignal) => Promise<A>) => Fx<never, unknown, A> = (
613
+ f,
614
+ ) => internal.tryPromise(f)
621
615
 
622
616
  export const tryCatchPromise: <A, E>(
623
- f: () => Promise<A>,
624
- g: (error: unknown) => E,
625
- ) => Fx<never, E, A> = (f, g) => internal.tryCatchPromise(f, g)
626
-
627
- export const tryCatchPromiseInterrupt: <A, E>(
628
617
  f: (signal: AbortSignal) => Promise<A>,
629
618
  g: (error: unknown) => E,
630
- ) => Fx<never, E, A> = (f, g) => internal.tryCatchPromiseInterrupt(f, g)
619
+ ) => Fx<never, E, A> = (f, g) => internal.tryCatchPromise(f, g)
631
620
 
632
621
  export const promiseFx: <R, E, A>(f: () => Promise<Fx<R, E, A>>) => Fx<R, E, A> = (f) =>
633
622
  internal.promiseFx(f)
634
623
 
635
- export const promiseInterrupFx: <R, E, A>(
624
+ export const tryPromiseFx: <R, E, A>(
636
625
  f: (signal: AbortSignal) => Promise<Fx<R, E, A>>,
637
- ) => Fx<R, E, A> = (f) => internal.promiseInterruptFx(f)
638
-
639
- export const tryPromiseFx: <R, E, A>(f: () => Promise<Fx<R, E, A>>) => Fx<R, unknown, A> = (f) =>
640
- internal.tryPromiseFx(f)
641
-
642
- export const tryPromiseInterruptFx: <R, E, A>(
643
- f: (signal: AbortSignal) => Promise<Fx<R, E, A>>,
644
- ) => Fx<R, unknown, A> = (f) => internal.tryPromiseInterruptFx(f)
626
+ ) => Fx<R, unknown, A> = (f) => internal.tryPromiseFx(f)
645
627
 
646
628
  export const tryCatchPromiseFx: <R, E, A, E2>(
647
- f: () => Promise<Fx<R, E, A>>,
648
- g: (error: unknown) => E2,
649
- ) => Fx<R, E | E2, A> = (f, g) => internal.tryCatchPromiseFx(f, g)
650
-
651
- export const tryCatchPromiseInterruptFx: <R, E, A, E2>(
652
629
  f: (signal: AbortSignal) => Promise<Fx<R, E, A>>,
653
630
  g: (error: unknown) => E2,
654
- ) => Fx<R, E | E2, A> = (f, g) => internal.tryCatchPromiseInterruptFx(f, g)
631
+ ) => Fx<R, E | E2, A> = (f, g) => internal.tryCatchPromiseFx(f, g)
655
632
 
656
633
  export const provideContext: {
657
634
  <R>(context: Context.Context<R>): <E, A>(fx: Fx<R, E, A>) => Fx<never, E, A>
@@ -1086,6 +1063,7 @@ export const orElse: {
1086
1063
  ): Fx<R | R2, E2, B> => internal.orElse(fx, f),
1087
1064
  )
1088
1065
 
1066
+ export * from './RefArray.js'
1089
1067
  export * from './RefSubject.js'
1090
1068
  export * from './Computed.js'
1091
1069
  export * from './Filtered.js'
package/src/multicast.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type * as Context from '@effect/data/Context'
2
2
  import { identity } from '@effect/data/Function'
3
+ import { pipeArguments } from '@effect/data/Pipeable'
3
4
  import type * as Cause from '@effect/io/Cause'
4
5
  import * as Effect from '@effect/io/Effect'
5
6
  import * as Fiber from '@effect/io/Fiber'
@@ -84,6 +85,11 @@ export class MulticastFx<R, E, A> implements Fx<R, E, A>, Sink<never, E, A> {
84
85
  )
85
86
  }
86
87
 
88
+ pipe() {
89
+ // eslint-disable-next-line prefer-rest-params
90
+ return pipeArguments(this, arguments)
91
+ }
92
+
87
93
  protected runEvent<R>(observer: MulticastObserver<R, E, A>, a: A) {
88
94
  return Effect.catchAllCause(
89
95
  Effect.provideContext(observer.sink.event(a), observer.context),
package/src/promise.ts CHANGED
@@ -4,68 +4,34 @@ import type { Fx } from './Fx.js'
4
4
  import { fromEffect } from './fromEffect.js'
5
5
  import { fromFxEffect } from './fromFxEffect.js'
6
6
 
7
- export function promise<A>(f: () => Promise<A>): Fx<never, never, A> {
7
+ export function promise<A>(f: (signal: AbortSignal) => Promise<A>): Fx<never, never, A> {
8
8
  return fromEffect(Effect.promise(f))
9
9
  }
10
10
 
11
- export function promiseInterrupt<A>(f: (signal: AbortSignal) => Promise<A>): Fx<never, never, A> {
12
- return fromEffect(Effect.promiseInterrupt(f))
13
- }
14
-
15
- export function tryPromise<A>(f: () => Promise<A>): Fx<never, unknown, A> {
11
+ export function tryPromise<A>(f: (signal: AbortSignal) => Promise<A>): Fx<never, unknown, A> {
16
12
  return fromEffect(Effect.tryPromise(f))
17
13
  }
18
14
 
19
- export function tryPromiseInterrupt<A>(
20
- f: (signal: AbortSignal) => Promise<A>,
21
- ): Fx<never, unknown, A> {
22
- return fromEffect(Effect.tryPromiseInterrupt(f))
23
- }
24
-
25
15
  export function tryCatchPromise<A, E>(
26
- f: () => Promise<A>,
27
- g: (error: unknown) => E,
28
- ): Fx<never, E, A> {
29
- return fromEffect(Effect.tryPromise({ try: f, catch: g }))
30
- }
31
-
32
- export function tryCatchPromiseInterrupt<A, E>(
33
16
  f: (signal: AbortSignal) => Promise<A>,
34
17
  g: (error: unknown) => E,
35
18
  ): Fx<never, E, A> {
36
- return fromEffect(Effect.tryPromiseInterrupt({ try: f, catch: g }))
19
+ return fromEffect(Effect.tryPromise({ try: f, catch: g }))
37
20
  }
38
21
 
39
- export function promiseFx<R, E, A>(f: () => Promise<Fx<R, E, A>>): Fx<R, E, A> {
22
+ export function promiseFx<R, E, A>(f: (signal: AbortSignal) => Promise<Fx<R, E, A>>): Fx<R, E, A> {
40
23
  return fromFxEffect(Effect.promise(f))
41
24
  }
42
25
 
43
- export function promiseInterruptFx<R, E, A>(
44
- f: (signal: AbortSignal) => Promise<Fx<R, E, A>>,
45
- ): Fx<R, E, A> {
46
- return fromFxEffect(Effect.promiseInterrupt(f))
47
- }
48
-
49
- export function tryPromiseFx<R, E, A>(f: () => Promise<Fx<R, E, A>>): Fx<R, unknown, A> {
50
- return fromFxEffect(Effect.tryPromise(f))
51
- }
52
-
53
- export function tryPromiseInterruptFx<R, E, A>(
26
+ export function tryPromiseFx<R, E, A>(
54
27
  f: (signal: AbortSignal) => Promise<Fx<R, E, A>>,
55
28
  ): Fx<R, unknown, A> {
56
- return fromFxEffect(Effect.tryPromiseInterrupt(f))
29
+ return fromFxEffect(Effect.tryPromise(f))
57
30
  }
58
31
 
59
32
  export function tryCatchPromiseFx<R, E, A, E2>(
60
- f: () => Promise<Fx<R, E, A>>,
61
- g: (error: unknown) => E2,
62
- ): Fx<R, E | E2, A> {
63
- return fromFxEffect(Effect.tryPromise({ try: f, catch: g }))
64
- }
65
-
66
- export function tryCatchPromiseInterruptFx<R, E, A, E2>(
67
33
  f: (signal: AbortSignal) => Promise<Fx<R, E, A>>,
68
34
  g: (error: unknown) => E2,
69
35
  ): Fx<R, E | E2, A> {
70
- return fromFxEffect(Effect.tryPromiseInterrupt({ try: f, catch: g }))
36
+ return fromFxEffect(Effect.tryPromise({ try: f, catch: g }))
71
37
  }