Hyperlinkv0.8.0-beta.28

Effect

Effect.filterMapOrFailconsteffect/Effect.ts:5193
<A, B, X, E2>(
  filter: Filter.Filter<NoInfer<A>, B, X>,
  orFailWith: (x: X) => E2
): <E, R>(self: Effect<A, E, R>) => Effect<B, E2 | E, R>
<A, B, X>(filter: Filter.Filter<NoInfer<A>, B, X>): <E, R>(
  self: Effect<A, E, R>
) => Effect<B, Cause.NoSuchElementError | E, R>
<A, E, R, B, X, E2>(
  self: Effect<A, E, R>,
  filter: Filter.Filter<A, B, X>,
  orFailWith: (x: X) => E2
): Effect<B, E2 | E, R>
<A, E, R, B, X>(
  self: Effect<A, E, R>,
  filter: Filter.Filter<A, B, X>
): Effect<B, Cause.NoSuchElementError | E, R>

Filters and maps an effect with a Filter, failing when the filter fails.

When to use

Use when validating and transforming one effect success with a synchronous Filter, while rejected values should fail the effect.

Details

Result.succeed becomes the returned success value. Result.fail is mapped with orFailWith when provided, or fails with NoSuchElementError.

Source effect/Effect.ts:519318 lines
export const filterMapOrFail: {
  <A, B, X, E2>(
    filter: Filter.Filter<NoInfer<A>, B, X>,
    orFailWith: (x: X) => E2
  ): <E, R>(self: Effect<A, E, R>) => Effect<B, E2 | E, R>
  <A, B, X>(
    filter: Filter.Filter<NoInfer<A>, B, X>
  ): <E, R>(self: Effect<A, E, R>) => Effect<B, Cause.NoSuchElementError | E, R>
  <A, E, R, B, X, E2>(
    self: Effect<A, E, R>,
    filter: Filter.Filter<A, B, X>,
    orFailWith: (x: X) => E2
  ): Effect<B, E2 | E, R>
  <A, E, R, B, X>(
    self: Effect<A, E, R>,
    filter: Filter.Filter<A, B, X>
  ): Effect<B, Cause.NoSuchElementError | E, R>
} = internal.filterMapOrFail