import type { Array, ParseArray } from './array'; import type { BigInt, ParseBigInt } from './bigint'; import type { Const, ParseConst } from './const'; import type { Ident, ParseIdent } from './ident'; import type { Integer, ParseInteger } from './integer'; import type { Number, ParseNumber } from './number'; import type { Optional, ParseOptional } from './optional'; import type { ParseRest, Rest } from './rest'; import type { ParseString, String } from './string'; import type { ParseTuple, Tuple } from './tuple'; import type { ParseUnion, Union } from './union'; import type { ParseUnsignedInteger, UnsignedInteger } from './unsigned_integer'; import type { ParseUnsignedNumber, UnsignedNumber } from './unsigned_number'; import type { ParseUntil_1, Until_1 } from './until_1'; import type { ParseUntil, Until } from './until'; import type { IParser } from './parser'; type ParseInput = (Parser extends Array ? ParseArray : Parser extends BigInt ? ParseBigInt : Parser extends Const ? ParseConst : Parser extends Ident ? ParseIdent : Parser extends Integer ? ParseInteger : Parser extends Number ? ParseNumber : Parser extends Optional ? ParseOptional : Parser extends Rest ? ParseRest : Parser extends String ? ParseString : Parser extends Tuple ? ParseTuple : Parser extends Union ? ParseUnion : Parser extends UnsignedInteger ? ParseUnsignedInteger : Parser extends UnsignedNumber ? ParseUnsignedNumber : Parser extends Until ? ParseUntil : Parser extends Until_1 ? ParseUntil_1 : [ ]); type ParseMapping = ((Parser['mapping'] & { input: ParseResult; })['output']); /** Parses code with the given parser */ export type Parse = (ParseInput extends [infer ParseResult extends unknown, infer InputRest extends string] ? [ParseMapping, InputRest] : []); export {};