( iterator: Iterator<A>, maxChunkSize = DefaultChunkSize )
| 3130 | |
| 3131 | /** @internal */ |
| 3132 | export const fromIteratorSucceed = <A>( |
| 3133 | iterator: Iterator<A>, |
| 3134 | maxChunkSize = DefaultChunkSize |
| 3135 | ): Stream.Stream<A> => { |
| 3136 | return pipe( |
| 3137 | Effect.sync(() => { |
| 3138 | let builder: Array<A> = [] |
| 3139 | const loop = ( |
| 3140 | iterator: Iterator<A> |
| 3141 | ): Channel.Channel<Chunk.Chunk<A>, unknown, never, unknown, unknown, unknown> => |
| 3142 | pipe( |
| 3143 | Effect.sync(() => { |
| 3144 | let next: IteratorResult<A, any> = iterator.next() |
| 3145 | if (maxChunkSize === 1) { |
| 3146 | if (next.done) { |
| 3147 | return core.void |
| 3148 | } |
| 3149 | return pipe( |
| 3150 | core.write(Chunk.of(next.value)), |
| 3151 | core.flatMap(() => loop(iterator)) |
| 3152 | ) |
| 3153 | } |
| 3154 | builder = [] |
| 3155 | let count = 0 |
| 3156 | while (next.done === false) { |
| 3157 | builder.push(next.value) |
| 3158 | count = count + 1 |
| 3159 | if (count >= maxChunkSize) { |
| 3160 | break |
| 3161 | } |
| 3162 | next = iterator.next() |
| 3163 | } |
| 3164 | if (count > 0) { |
| 3165 | return pipe( |
| 3166 | core.write(Chunk.unsafeFromArray(builder)), |
| 3167 | core.flatMap(() => loop(iterator)) |
| 3168 | ) |
| 3169 | } |
| 3170 | return core.void |
| 3171 | }), |
| 3172 | channel.unwrap |
| 3173 | ) |
| 3174 | return new StreamImpl(loop(iterator)) |
| 3175 | }), |
| 3176 | unwrap |
| 3177 | ) |
| 3178 | } |
| 3179 | |
| 3180 | /** @internal */ |
| 3181 | export const fromPull = <R, R2, E, A>( |
no test coverage detected