| 6968 | E | Cause.Done |
| 6969 | > = Effect.matchCauseEffect(upstream, { |
| 6970 | onSuccess(arr) { |
| 6971 | MutableList.appendAllUnsafe(list, arr) |
| 6972 | if (skip > 0) { |
| 6973 | const length = list.length |
| 6974 | MutableList.takeNVoid(list, skip) |
| 6975 | skip = Math.max(0, skip - length) |
| 6976 | } |
| 6977 | if (list.length < chunkSize) return pull |
| 6978 | emitted = true |
| 6979 | const chunks = [] as any as Arr.NonEmptyArray<Arr.NonEmptyReadonlyArray<A>> |
| 6980 | while (list.length >= chunkSize) { |
| 6981 | if (chunkSize === stepSize) { |
| 6982 | chunks.push(MutableList.takeN(list, chunkSize) as any) |
| 6983 | } else { |
| 6984 | chunks.push(MutableList.toArrayN(list, chunkSize) as any) |
| 6985 | if (chunkSize === 1 && stepSize <= 0) { |
| 6986 | MutableList.take(list) |
| 6987 | } else { |
| 6988 | const length = list.length |
| 6989 | MutableList.takeNVoid(list, stepSize) |
| 6990 | skip = Math.max(0, stepSize - length) |
| 6991 | } |
| 6992 | } |
| 6993 | } |
| 6994 | return Effect.succeed(chunks) |
| 6995 | }, |
| 6996 | onFailure(cause_) { |
| 6997 | if (emitted) MutableList.takeNVoid(list, chunkSize - stepSize) |
| 6998 | if (list.length === 0) return Effect.failCause(cause_) |