Hyperlinkv0.8.0-beta.28

Channel

Channel.repeatconsteffect/Channel.ts:3027
<SO, OutDone, SE, SR>(
  schedule:
    | Schedule.Schedule<SO, Types.NoInfer<OutDone>, SE, SR>
    | ((
        $: <SO, SE, SR>(
          _: Schedule.Schedule<SO, NoInfer<OutDone>, SE, SR>
        ) => Schedule.Schedule<SO, OutDone, SE, SR>
      ) => Schedule.Schedule<SO, Types.NoInfer<OutDone>, SE, SR>)
): <OutElem, OutErr, InElem, InErr, InDone, Env>(
  self: Channel<
    OutElem,
    OutErr | SE,
    OutDone,
    InElem,
    InErr,
    InDone,
    Env | SR
  >
) => Channel<
  OutElem,
  OutErr | SE,
  OutDone,
  InElem,
  InErr,
  InDone,
  Env | SR
>
<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env, SO, SE, SR>(
  self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
  schedule:
    | Schedule.Schedule<SO, OutDone, SE, SR>
    | ((
        $: <SO, SE, SR>(
          _: Schedule.Schedule<SO, NoInfer<OutDone>, SE, SR>
        ) => Schedule.Schedule<SO, OutDone, SE, SR>
      ) => Schedule.Schedule<SO, Types.NoInfer<OutDone>, SE, SR>)
): Channel<OutElem, OutErr | SE, OutDone, InElem, InErr, InDone, Env | SR>

Repeats this channel according to the provided schedule.

repetition
Source effect/Channel.ts:302753 lines
export const repeat: {
  <SO, OutDone, SE, SR>(
    schedule:
      | Schedule.Schedule<SO, Types.NoInfer<OutDone>, SE, SR>
      | ((
        $: <SO, SE, SR>(_: Schedule.Schedule<SO, NoInfer<OutDone>, SE, SR>) => Schedule.Schedule<SO, OutDone, SE, SR>
      ) => Schedule.Schedule<SO, Types.NoInfer<OutDone>, SE, SR>)
  ): <OutElem, OutErr, InElem, InErr, InDone, Env>(
    self: Channel<OutElem, OutErr | SE, OutDone, InElem, InErr, InDone, Env | SR>
  ) => Channel<OutElem, OutErr | SE, OutDone, InElem, InErr, InDone, Env | SR>
  <OutElem, OutErr, OutDone, InElem, InErr, InDone, Env, SO, SE, SR>(
    self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
    schedule:
      | Schedule.Schedule<SO, OutDone, SE, SR>
      | ((
        $: <SO, SE, SR>(_: Schedule.Schedule<SO, NoInfer<OutDone>, SE, SR>) => Schedule.Schedule<SO, OutDone, SE, SR>
      ) => Schedule.Schedule<SO, Types.NoInfer<OutDone>, SE, SR>)
  ): Channel<OutElem, OutErr | SE, OutDone, InElem, InErr, InDone, Env | SR>
} = dual(2, <OutElem, OutErr, OutDone, InElem, InErr, InDone, Env, SO, SE, SR>(
  self: Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,
  schedule:
    | Schedule.Schedule<SO, OutDone, SE, SR>
    | ((
      $: <SO, SE, SR>(_: Schedule.Schedule<SO, NoInfer<OutDone>, SE, SR>) => Schedule.Schedule<SO, OutDone, SE, SR>
    ) => Schedule.Schedule<SO, Types.NoInfer<OutDone>, SE, SR>)
): Channel<OutElem, OutErr | SE, OutDone, InElem, InErr, InDone, Env | SR> =>
  Schedule.toStepWithMetadata(typeof schedule === "function" ? schedule(identity_) : schedule).pipe(
    Effect.map((step) => {
      let meta = Schedule.CurrentMetadata.defaultValue()
      const loop: Channel<
        OutElem,
        OutErr | SE,
        OutDone,
        InElem,
        InErr,
        InDone,
        Env | SR
      > = concatWith(
        provideServiceEffect(self, Schedule.CurrentMetadata, Effect.sync(() => meta)),
        (done) =>
          step(done).pipe(
            Effect.map((meta_) => {
              meta = meta_
              return loop
            }),
            Pull.catchDone(() => Effect.succeed(end(done))),
            unwrap
          )
      )
      return loop
    }),
    unwrap
  ))
Referenced by 1 symbols