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

Function fromIteratorSucceed

packages/effect/src/internal/stream.ts:3132–3178  ·  view source on GitHub ↗
(
  iterator: Iterator<A>,
  maxChunkSize = DefaultChunkSize
)

Source from the content-addressed store, hash-verified

3130
3131/** @internal */
3132export 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 */
3181export const fromPull = <R, R2, E, A>(

Callers 1

fromIterableFunction · 0.85

Calls 3

syncMethod · 0.80
pipeFunction · 0.70
loopFunction · 0.70

Tested by

no test coverage detected