function filterErrors<const P extends ReadonlyArray<string>>(...exceptTags: P) {
const tagSet = new Set<string>(exceptTags as ReadonlyArray<string>);
return <A, E extends { _tag: string }, R>(
effect: Effect.Effect<A, E, R>,
): Effect.Effect<A, Extract<E, { _tag: P[number] }> | UnknownException, R> =>
effect.pipe(
Effect.mapError((error) =>
tagSet.has(error._tag)
? (error as Extract<E, { _tag: P[number] }>)
: new UnknownException(error)
),
);
}
function filterErrors<const P extends ReadonlyArray<string>>(...exceptTags: P) {
const tagSet = new Set<string>(exceptTags as ReadonlyArray<string>);
return <A, E extends { _tag: string }, R>(
effect: Effect.Effect<A, E, R>,
): Effect.Effect<A, Extract<E, { _tag: P[number] }> | UnknownException, R> =>
effect.pipe(
Effect.mapError((error) =>
tagSet.has(error._tag)
? (error as Extract<E, { _tag: P[number] }>)
: new UnknownException(error)
),
);
}