diff --git a/.changeset/wild-lamps-promise.md b/.changeset/wild-lamps-promise.md new file mode 100644 index 0000000000..8b9d0ef1df --- /dev/null +++ b/.changeset/wild-lamps-promise.md @@ -0,0 +1,5 @@ +--- +"effect": patch +--- + +added {Readable, Subscribable}.unwrap diff --git a/packages/effect/src/Readable.ts b/packages/effect/src/Readable.ts index 019112c594..b5bc249ff9 100644 --- a/packages/effect/src/Readable.ts +++ b/packages/effect/src/Readable.ts @@ -79,3 +79,14 @@ export const mapEffect: { self: Readable, f: (a: NoInfer) => Effect ): Readable => make(core.flatMap(self.get, f))) + +/** + * @since 2.0.0 + * @category constructors + */ +export const unwrap = ( + effect: Effect, E1, R1> +): Readable => + make( + core.flatMap(effect, (s) => s.get) + ) diff --git a/packages/effect/src/Subscribable.ts b/packages/effect/src/Subscribable.ts index 85f7c4493f..8ae1f85140 100644 --- a/packages/effect/src/Subscribable.ts +++ b/packages/effect/src/Subscribable.ts @@ -85,3 +85,15 @@ export const mapEffect: { get: Effect.flatMap(self.get, f), changes: Stream.mapEffect(self.changes, f) })) + +/** + * @since 2.0.0 + * @category constructors + */ +export const unwrap = ( + effect: Effect.Effect, E1, R1> +): Subscribable => + make({ + get: Effect.flatMap(effect, (s) => s.get), + changes: Stream.unwrap(Effect.map(effect, (s) => s.changes)) + })