// Generated by dts-bundle v0.7.3 declare module 'regexpp' { import * as AST from "regexpp/ast"; import { RegExpParser } from "regexpp/parser"; import { RegExpValidator } from "regexpp/validator"; import { RegExpVisitor } from "regexpp/visitor"; export { AST, RegExpParser, RegExpValidator }; export function parseRegExpLiteral(source: string | RegExp, options?: RegExpParser.Options): AST.RegExpLiteral; export function validateRegExpLiteral(source: string, options?: RegExpValidator.Options): void; export function visitRegExpAST(node: AST.Node, handlers: RegExpVisitor.Handlers): void; } declare module 'regexpp/ast' { export type Node = BranchNode | LeafNode; export type BranchNode = RegExpLiteral | Pattern | Alternative | Group | CapturingGroup | Quantifier | CharacterClass | LookaroundAssertion | CharacterClassRange; export type LeafNode = BoundaryAssertion | CharacterSet | Character | Backreference | Flags; export type Element = Assertion | Quantifier | QuantifiableElement; export type QuantifiableElement = Group | CapturingGroup | CharacterClass | CharacterSet | Character | Backreference | LookaheadAssertion; export type CharacterClassElement = EscapeCharacterSet | UnicodePropertyCharacterSet | Character | CharacterClassRange; export interface NodeBase { type: Node["type"]; parent: Node["parent"]; start: number; end: number; raw: string; } export interface RegExpLiteral extends NodeBase { type: "RegExpLiteral"; parent: null; pattern: Pattern; flags: Flags; } export interface Pattern extends NodeBase { type: "Pattern"; parent: RegExpLiteral | null; alternatives: Alternative[]; } export interface Alternative extends NodeBase { type: "Alternative"; parent: Pattern | Group | CapturingGroup | LookaroundAssertion; elements: Element[]; } export interface Group extends NodeBase { type: "Group"; parent: Alternative | Quantifier; alternatives: Alternative[]; } export interface CapturingGroup extends NodeBase { type: "CapturingGroup"; parent: Alternative | Quantifier; name: string | null; alternatives: Alternative[]; references: Backreference[]; } export type LookaroundAssertion = LookaheadAssertion | LookbehindAssertion; export interface LookaheadAssertion extends NodeBase { type: "Assertion"; parent: Alternative | Quantifier; kind: "lookahead"; negate: boolean; alternatives: Alternative[]; } export interface LookbehindAssertion extends NodeBase { type: "Assertion"; parent: Alternative; kind: "lookbehind"; negate: boolean; alternatives: Alternative[]; } export interface Quantifier extends NodeBase { type: "Quantifier"; parent: Alternative; min: number; max: number; greedy: boolean; element: QuantifiableElement; } export interface CharacterClass extends NodeBase { type: "CharacterClass"; parent: Alternative | Quantifier; negate: boolean; elements: CharacterClassElement[]; } export interface CharacterClassRange extends NodeBase { type: "CharacterClassRange"; parent: CharacterClass; min: Character; max: Character; } export type Assertion = BoundaryAssertion | LookaroundAssertion; export type BoundaryAssertion = EdgeAssertion | WordBoundaryAssertion; export interface EdgeAssertion extends NodeBase { type: "Assertion"; parent: Alternative | Quantifier; kind: "start" | "end"; } export interface WordBoundaryAssertion extends NodeBase { type: "Assertion"; parent: Alternative | Quantifier; kind: "word"; negate: boolean; } export type CharacterSet = AnyCharacterSet | EscapeCharacterSet | UnicodePropertyCharacterSet; export interface AnyCharacterSet extends NodeBase { type: "CharacterSet"; parent: Alternative | Quantifier; kind: "any"; } export interface EscapeCharacterSet extends NodeBase { type: "CharacterSet"; parent: Alternative | Quantifier | CharacterClass; kind: "digit" | "space" | "word"; negate: boolean; } export interface UnicodePropertyCharacterSet extends NodeBase { type: "CharacterSet"; parent: Alternative | Quantifier | CharacterClass; kind: "property"; key: string; value: string | null; negate: boolean; } export interface Character extends NodeBase { type: "Character"; parent: Alternative | Quantifier | CharacterClass | CharacterClassRange; value: number; } export interface Backreference extends NodeBase { type: "Backreference"; parent: Alternative | Quantifier; ref: number | string; resolved: CapturingGroup; } export interface Flags extends NodeBase { type: "Flags"; parent: RegExpLiteral | null; dotAll: boolean; global: boolean; hasIndices: boolean; ignoreCase: boolean; multiline: boolean; sticky: boolean; unicode: boolean; } } declare module 'regexpp/parser' { import { Flags, RegExpLiteral, Pattern } from "regexpp/ast"; import { EcmaVersion } from "regexpp/ecma-versions"; export namespace RegExpParser { interface Options { strict?: boolean; ecmaVersion?: EcmaVersion; } } export class RegExpParser { constructor(options?: RegExpParser.Options); parseLiteral(source: string, start?: number, end?: number): RegExpLiteral; parseFlags(source: string, start?: number, end?: number): Flags; parsePattern(source: string, start?: number, end?: number, uFlag?: boolean): Pattern; } } declare module 'regexpp/validator' { import { EcmaVersion } from "regexpp/ecma-versions"; export namespace RegExpValidator { interface Options { strict?: boolean; ecmaVersion?: EcmaVersion; onLiteralEnter?(start: number): void; onLiteralLeave?(start: number, end: number): void; onFlags?(start: number, end: number, global: boolean, ignoreCase: boolean, multiline: boolean, unicode: boolean, sticky: boolean, dotAll: boolean, hasIndices: boolean): void; onPatternEnter?(start: number): void; onPatternLeave?(start: number, end: number): void; onDisjunctionEnter?(start: number): void; onDisjunctionLeave?(start: number, end: number): void; onAlternativeEnter?(start: number, index: number): void; onAlternativeLeave?(start: number, end: number, index: number): void; onGroupEnter?(start: number): void; onGroupLeave?(start: number, end: number): void; onCapturingGroupEnter?(start: number, name: string | null): void; onCapturingGroupLeave?(start: number, end: number, name: string | null): void; onQuantifier?(start: number, end: number, min: number, max: number, greedy: boolean): void; onLookaroundAssertionEnter?(start: number, kind: "lookahead" | "lookbehind", negate: boolean): void; onLookaroundAssertionLeave?(start: number, end: number, kind: "lookahead" | "lookbehind", negate: boolean): void; onEdgeAssertion?(start: number, end: number, kind: "start" | "end"): void; onWordBoundaryAssertion?(start: number, end: number, kind: "word", negate: boolean): void; onAnyCharacterSet?(start: number, end: number, kind: "any"): void; onEscapeCharacterSet?(start: number, end: number, kind: "digit" | "space" | "word", negate: boolean): void; onUnicodePropertyCharacterSet?(start: number, end: number, kind: "property", key: string, value: string | null, negate: boolean): void; onCharacter?(start: number, end: number, value: number): void; onBackreference?(start: number, end: number, ref: number | string): void; onCharacterClassEnter?(start: number, negate: boolean): void; onCharacterClassLeave?(start: number, end: number, negate: boolean): void; onCharacterClassRange?(start: number, end: number, min: number, max: number): void; } } export class RegExpValidator { constructor(options?: RegExpValidator.Options); validateLiteral(source: string, start?: number, end?: number): void; validateFlags(source: string, start?: number, end?: number): void; validatePattern(source: string, start?: number, end?: number, uFlag?: boolean): void; } } declare module 'regexpp/visitor' { import { Alternative, Assertion, Backreference, CapturingGroup, Character, CharacterClass, CharacterClassRange, CharacterSet, Flags, Group, Node, Pattern, Quantifier, RegExpLiteral } from "regexpp/ast"; export class RegExpVisitor { constructor(handlers: RegExpVisitor.Handlers); visit(node: Node): void; } export namespace RegExpVisitor { interface Handlers { onAlternativeEnter?(node: Alternative): void; onAlternativeLeave?(node: Alternative): void; onAssertionEnter?(node: Assertion): void; onAssertionLeave?(node: Assertion): void; onBackreferenceEnter?(node: Backreference): void; onBackreferenceLeave?(node: Backreference): void; onCapturingGroupEnter?(node: CapturingGroup): void; onCapturingGroupLeave?(node: CapturingGroup): void; onCharacterEnter?(node: Character): void; onCharacterLeave?(node: Character): void; onCharacterClassEnter?(node: CharacterClass): void; onCharacterClassLeave?(node: CharacterClass): void; onCharacterClassRangeEnter?(node: CharacterClassRange): void; onCharacterClassRangeLeave?(node: CharacterClassRange): void; onCharacterSetEnter?(node: CharacterSet): void; onCharacterSetLeave?(node: CharacterSet): void; onFlagsEnter?(node: Flags): void; onFlagsLeave?(node: Flags): void; onGroupEnter?(node: Group): void; onGroupLeave?(node: Group): void; onPatternEnter?(node: Pattern): void; onPatternLeave?(node: Pattern): void; onQuantifierEnter?(node: Quantifier): void; onQuantifierLeave?(node: Quantifier): void; onRegExpLiteralEnter?(node: RegExpLiteral): void; onRegExpLiteralLeave?(node: RegExpLiteral): void; } } } declare module 'regexpp/ecma-versions' { export type EcmaVersion = 5 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022; }