import type { ParseOptions } from "../AST.js"; /** * @tsplus type fncts.schema.Parser * @tsplus companion fncts.schema.ParserOps * @tsplus no-inherit fncts.schema.Schema fncts.schema.SchemaOps */ export interface Parser { (input: unknown, options?: ParseOptions): ParseResult; } /** * @tsplus static fncts.schema.ParserOps make */ export function make(parse: Parser): Parser { return parse; } /** * @tsplus static fncts.schema.ParserOps fromRefinement */ export function fromRefinement(ast: AST, refinement: Refinement): Parser { return (u) => (refinement(u) ? ParseResult.succeed(u) : ParseResult.fail(ParseError.TypeError(ast, u))); }