// ets_tracing: off import type * as C from "../../../Cause/index.js" import * as A from "../../../Collections/Immutable/Chunk/index.js" import { _A, _E } from "../../../Effect/commons.js" import * as T from "../../../Effect/index.js" import * as O from "../../../Option/index.js" import * as Q from "../../../Queue/index.js" import * as Take from "../Take/index.js" export type Pull = T.Effect, A.Chunk> export function emit(a: A): T.UIO> { return T.succeed(A.single(a)) } export function emitChunk(as: A.Chunk): T.UIO> { return T.succeed(as) } export function fromQueue( d: Q.Dequeue> ): T.IO, A.Chunk> { return T.chain_(Q.take(d), (_) => Take.done(_)) } export function fail(e: E): T.IO, never> { return T.fail(O.some(e)) } export function failCause(c: C.Cause): T.IO, never> { return T.mapError_(T.halt(c), O.some) } export function empty(): T.IO> { return T.succeed(A.empty()) } export const end: T.IO, never> = T.fail(O.none)