import * as Arr from 'fp-ts/Array'; import { identity, pipe } from 'fp-ts/function'; import * as O from 'fp-ts/Option'; type Option = O.Option; export const eachAsync = async (o: Option, f: (a: A) => Promise): Promise => { if (O.isSome(o)) { return f(o.value); } }; export const mapAsync = async (o: Option, f: (a: A) => Promise): Promise> => O.isSome(o) ? O.some(await f(o.value)) : O.none; export const somes = (options: Array>): Array => pipe(options, Arr.filterMap(identity));