(
...args: [options: {
readonly evaluate: LazyArg<ReadableStream<A>>
readonly onError: (error: unknown) => E
readonly releaseLockOnEnd?: boolean | undefined
}] | [
evaluate: LazyArg<ReadableStream<A>>,
onError: (error: unknown) => E
]
)
| 3246 | onError: (error: unknown) => E |
| 3247 | ): Stream.Stream<A, E> |
| 3248 | } = <A, E>( |
| 3249 | ...args: [options: { |
| 3250 | readonly evaluate: LazyArg<ReadableStream<A>> |
| 3251 | readonly onError: (error: unknown) => E |
| 3252 | readonly releaseLockOnEnd?: boolean | undefined |
| 3253 | }] | [ |
| 3254 | evaluate: LazyArg<ReadableStream<A>>, |
| 3255 | onError: (error: unknown) => E |
| 3256 | ] |
| 3257 | ): Stream.Stream<A, E> => { |
| 3258 | const evaluate = args.length === 1 ? args[0].evaluate : args[0] |
| 3259 | const onError = args.length === 1 ? args[0].onError : args[1] |
| 3260 | const releaseLockOnEnd = args.length === 1 ? args[0].releaseLockOnEnd === true : false |
| 3261 | return unwrapScoped(Effect.map( |
| 3262 | Effect.acquireRelease( |
| 3263 | Effect.sync(() => evaluate().getReader()), |
| 3264 | (reader) => |
| 3265 | releaseLockOnEnd |
| 3266 | ? Effect.sync(() => reader.releaseLock()) |
| 3267 | : Effect.promise(() => reader.cancel()) |
| 3268 | ), |
| 3269 | (reader) => |
| 3270 | repeatEffectOption( |
| 3271 | Effect.flatMap( |
| 3272 | Effect.tryPromise({ |
| 3273 | try: () => reader.read(), |
| 3274 | catch: (reason) => Option.some(onError(reason)) |
| 3275 | }), |
| 3276 | ({ done, value }) => done ? Effect.fail(Option.none()) : Effect.succeed(value) |
| 3277 | ) |
| 3278 | ) |
| 3279 | )) |
| 3280 | } |
| 3281 | |
| 3282 | /** @internal */ |
| 3283 | export const fromReadableStreamByob: { |
nothing calls this directly
no test coverage detected