MCPcopy Index your code
hub / github.com/Effect-TS/effect / fromReadableStream

Function fromReadableStream

packages/effect/src/internal/stream.ts:3248–3280  ·  view source on GitHub ↗
(
  ...args: [options: {
    readonly evaluate: LazyArg<ReadableStream<A>>
    readonly onError: (error: unknown) => E
    readonly releaseLockOnEnd?: boolean | undefined
  }] | [
    evaluate: LazyArg<ReadableStream<A>>,
    onError: (error: unknown) => E
  ]
)

Source from the content-addressed store, hash-verified

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 */
3283export const fromReadableStreamByob: {

Callers

nothing calls this directly

Calls 7

repeatEffectOptionFunction · 0.85
syncMethod · 0.80
readMethod · 0.80
unwrapScopedFunction · 0.70
mapMethod · 0.65
failMethod · 0.65
onErrorFunction · 0.50

Tested by

no test coverage detected