( reader: ReadableStreamBYOBReader, onError: (error: unknown) => E, size: number )
| 3326 | const EOF = Symbol.for("effect/Stream/EOF") |
| 3327 | |
| 3328 | const readChunkStreamByobReader = <E>( |
| 3329 | reader: ReadableStreamBYOBReader, |
| 3330 | onError: (error: unknown) => E, |
| 3331 | size: number |
| 3332 | ): Stream.Stream<Uint8Array, E | typeof EOF> => { |
| 3333 | const buffer = new ArrayBuffer(size) |
| 3334 | return paginateEffect(0, (offset) => |
| 3335 | Effect.flatMap( |
| 3336 | Effect.tryPromise({ |
| 3337 | try: () => reader.read(new Uint8Array(buffer, offset, buffer.byteLength - offset)), |
| 3338 | catch: (reason) => onError(reason) |
| 3339 | }), |
| 3340 | ({ done, value }) => { |
| 3341 | if (done) { |
| 3342 | return Effect.fail(EOF) |
| 3343 | } |
| 3344 | const newOffset = offset + value.byteLength |
| 3345 | return Effect.succeed([ |
| 3346 | value, |
| 3347 | newOffset >= buffer.byteLength |
| 3348 | ? Option.none<number>() |
| 3349 | : Option.some(newOffset) |
| 3350 | ]) |
| 3351 | } |
| 3352 | )) |
| 3353 | } |
| 3354 | |
| 3355 | /** @internal */ |
| 3356 | export const groupAdjacentBy = dual< |
no test coverage detected
searching dependent graphs…