import { theUndefinedError, UndefinedError } from '../Error/UndefinedError' import { WrappedError } from '../Error/WrappedError' import { Parser, ParserP } from '../Parser' import { Result } from '../Result' import { failure } from '../Result/constructors' import { mapWrappedError } from '../Result/mapWrappedError' export const getParserU = (parse: Parser) => (input: I | undefined) => { if (input === undefined) { return { success: false, error: theUndefinedError, } } else { return mapWrappedError(parse(input)) } } export const getParserUP = (parse: ParserP) => async (input: I | undefined): Promise>> => { if (input === undefined) { return failure(theUndefinedError) } else { return mapWrappedError(await parse(input)) } }