1 // Generated by dts-bundle v0.7.3
\r
3 declare module 'regexpp' {
\r
4 import * as AST from "regexpp/ast";
\r
5 import { RegExpParser } from "regexpp/parser";
\r
6 import { RegExpValidator } from "regexpp/validator";
\r
7 import { RegExpVisitor } from "regexpp/visitor";
\r
8 export { AST, RegExpParser, RegExpValidator };
\r
9 export function parseRegExpLiteral(source: string | RegExp, options?: RegExpParser.Options): AST.RegExpLiteral;
\r
10 export function validateRegExpLiteral(source: string, options?: RegExpValidator.Options): void;
\r
11 export function visitRegExpAST(node: AST.Node, handlers: RegExpVisitor.Handlers): void;
\r
14 declare module 'regexpp/ast' {
\r
15 export type Node = BranchNode | LeafNode;
\r
16 export type BranchNode = RegExpLiteral | Pattern | Alternative | Group | CapturingGroup | Quantifier | CharacterClass | LookaroundAssertion | CharacterClassRange;
\r
17 export type LeafNode = BoundaryAssertion | CharacterSet | Character | Backreference | Flags;
\r
18 export type Element = Assertion | Quantifier | QuantifiableElement;
\r
19 export type QuantifiableElement = Group | CapturingGroup | CharacterClass | CharacterSet | Character | Backreference | LookaheadAssertion;
\r
20 export type CharacterClassElement = EscapeCharacterSet | UnicodePropertyCharacterSet | Character | CharacterClassRange;
\r
21 export interface NodeBase {
\r
23 parent: Node["parent"];
\r
28 export interface RegExpLiteral extends NodeBase {
\r
29 type: "RegExpLiteral";
\r
34 export interface Pattern extends NodeBase {
\r
36 parent: RegExpLiteral | null;
\r
37 alternatives: Alternative[];
\r
39 export interface Alternative extends NodeBase {
\r
40 type: "Alternative";
\r
41 parent: Pattern | Group | CapturingGroup | LookaroundAssertion;
\r
42 elements: Element[];
\r
44 export interface Group extends NodeBase {
\r
46 parent: Alternative | Quantifier;
\r
47 alternatives: Alternative[];
\r
49 export interface CapturingGroup extends NodeBase {
\r
50 type: "CapturingGroup";
\r
51 parent: Alternative | Quantifier;
\r
52 name: string | null;
\r
53 alternatives: Alternative[];
\r
54 references: Backreference[];
\r
56 export type LookaroundAssertion = LookaheadAssertion | LookbehindAssertion;
\r
57 export interface LookaheadAssertion extends NodeBase {
\r
59 parent: Alternative | Quantifier;
\r
62 alternatives: Alternative[];
\r
64 export interface LookbehindAssertion extends NodeBase {
\r
66 parent: Alternative;
\r
69 alternatives: Alternative[];
\r
71 export interface Quantifier extends NodeBase {
\r
73 parent: Alternative;
\r
77 element: QuantifiableElement;
\r
79 export interface CharacterClass extends NodeBase {
\r
80 type: "CharacterClass";
\r
81 parent: Alternative | Quantifier;
\r
83 elements: CharacterClassElement[];
\r
85 export interface CharacterClassRange extends NodeBase {
\r
86 type: "CharacterClassRange";
\r
87 parent: CharacterClass;
\r
91 export type Assertion = BoundaryAssertion | LookaroundAssertion;
\r
92 export type BoundaryAssertion = EdgeAssertion | WordBoundaryAssertion;
\r
93 export interface EdgeAssertion extends NodeBase {
\r
95 parent: Alternative | Quantifier;
\r
96 kind: "start" | "end";
\r
98 export interface WordBoundaryAssertion extends NodeBase {
\r
100 parent: Alternative | Quantifier;
\r
104 export type CharacterSet = AnyCharacterSet | EscapeCharacterSet | UnicodePropertyCharacterSet;
\r
105 export interface AnyCharacterSet extends NodeBase {
\r
106 type: "CharacterSet";
\r
107 parent: Alternative | Quantifier;
\r
110 export interface EscapeCharacterSet extends NodeBase {
\r
111 type: "CharacterSet";
\r
112 parent: Alternative | Quantifier | CharacterClass;
\r
113 kind: "digit" | "space" | "word";
\r
116 export interface UnicodePropertyCharacterSet extends NodeBase {
\r
117 type: "CharacterSet";
\r
118 parent: Alternative | Quantifier | CharacterClass;
\r
121 value: string | null;
\r
124 export interface Character extends NodeBase {
\r
126 parent: Alternative | Quantifier | CharacterClass | CharacterClassRange;
\r
129 export interface Backreference extends NodeBase {
\r
130 type: "Backreference";
\r
131 parent: Alternative | Quantifier;
\r
132 ref: number | string;
\r
133 resolved: CapturingGroup;
\r
135 export interface Flags extends NodeBase {
\r
137 parent: RegExpLiteral | null;
\r
140 hasIndices: boolean;
\r
141 ignoreCase: boolean;
\r
142 multiline: boolean;
\r
148 declare module 'regexpp/parser' {
\r
149 import { Flags, RegExpLiteral, Pattern } from "regexpp/ast";
\r
150 import { EcmaVersion } from "regexpp/ecma-versions";
\r
151 export namespace RegExpParser {
\r
152 interface Options {
\r
154 ecmaVersion?: EcmaVersion;
\r
157 export class RegExpParser {
\r
158 constructor(options?: RegExpParser.Options);
\r
159 parseLiteral(source: string, start?: number, end?: number): RegExpLiteral;
\r
160 parseFlags(source: string, start?: number, end?: number): Flags;
\r
161 parsePattern(source: string, start?: number, end?: number, uFlag?: boolean): Pattern;
\r
165 declare module 'regexpp/validator' {
\r
166 import { EcmaVersion } from "regexpp/ecma-versions";
\r
167 export namespace RegExpValidator {
\r
168 interface Options {
\r
170 ecmaVersion?: EcmaVersion;
\r
171 onLiteralEnter?(start: number): void;
\r
172 onLiteralLeave?(start: number, end: number): void;
\r
173 onFlags?(start: number, end: number, global: boolean, ignoreCase: boolean, multiline: boolean, unicode: boolean, sticky: boolean, dotAll: boolean, hasIndices: boolean): void;
\r
174 onPatternEnter?(start: number): void;
\r
175 onPatternLeave?(start: number, end: number): void;
\r
176 onDisjunctionEnter?(start: number): void;
\r
177 onDisjunctionLeave?(start: number, end: number): void;
\r
178 onAlternativeEnter?(start: number, index: number): void;
\r
179 onAlternativeLeave?(start: number, end: number, index: number): void;
\r
180 onGroupEnter?(start: number): void;
\r
181 onGroupLeave?(start: number, end: number): void;
\r
182 onCapturingGroupEnter?(start: number, name: string | null): void;
\r
183 onCapturingGroupLeave?(start: number, end: number, name: string | null): void;
\r
184 onQuantifier?(start: number, end: number, min: number, max: number, greedy: boolean): void;
\r
185 onLookaroundAssertionEnter?(start: number, kind: "lookahead" | "lookbehind", negate: boolean): void;
\r
186 onLookaroundAssertionLeave?(start: number, end: number, kind: "lookahead" | "lookbehind", negate: boolean): void;
\r
187 onEdgeAssertion?(start: number, end: number, kind: "start" | "end"): void;
\r
188 onWordBoundaryAssertion?(start: number, end: number, kind: "word", negate: boolean): void;
\r
189 onAnyCharacterSet?(start: number, end: number, kind: "any"): void;
\r
190 onEscapeCharacterSet?(start: number, end: number, kind: "digit" | "space" | "word", negate: boolean): void;
\r
191 onUnicodePropertyCharacterSet?(start: number, end: number, kind: "property", key: string, value: string | null, negate: boolean): void;
\r
192 onCharacter?(start: number, end: number, value: number): void;
\r
193 onBackreference?(start: number, end: number, ref: number | string): void;
\r
194 onCharacterClassEnter?(start: number, negate: boolean): void;
\r
195 onCharacterClassLeave?(start: number, end: number, negate: boolean): void;
\r
196 onCharacterClassRange?(start: number, end: number, min: number, max: number): void;
\r
199 export class RegExpValidator {
\r
200 constructor(options?: RegExpValidator.Options);
\r
201 validateLiteral(source: string, start?: number, end?: number): void;
\r
202 validateFlags(source: string, start?: number, end?: number): void;
\r
203 validatePattern(source: string, start?: number, end?: number, uFlag?: boolean): void;
\r
207 declare module 'regexpp/visitor' {
\r
208 import { Alternative, Assertion, Backreference, CapturingGroup, Character, CharacterClass, CharacterClassRange, CharacterSet, Flags, Group, Node, Pattern, Quantifier, RegExpLiteral } from "regexpp/ast";
\r
209 export class RegExpVisitor {
\r
210 constructor(handlers: RegExpVisitor.Handlers);
\r
211 visit(node: Node): void;
\r
213 export namespace RegExpVisitor {
\r
214 interface Handlers {
\r
215 onAlternativeEnter?(node: Alternative): void;
\r
216 onAlternativeLeave?(node: Alternative): void;
\r
217 onAssertionEnter?(node: Assertion): void;
\r
218 onAssertionLeave?(node: Assertion): void;
\r
219 onBackreferenceEnter?(node: Backreference): void;
\r
220 onBackreferenceLeave?(node: Backreference): void;
\r
221 onCapturingGroupEnter?(node: CapturingGroup): void;
\r
222 onCapturingGroupLeave?(node: CapturingGroup): void;
\r
223 onCharacterEnter?(node: Character): void;
\r
224 onCharacterLeave?(node: Character): void;
\r
225 onCharacterClassEnter?(node: CharacterClass): void;
\r
226 onCharacterClassLeave?(node: CharacterClass): void;
\r
227 onCharacterClassRangeEnter?(node: CharacterClassRange): void;
\r
228 onCharacterClassRangeLeave?(node: CharacterClassRange): void;
\r
229 onCharacterSetEnter?(node: CharacterSet): void;
\r
230 onCharacterSetLeave?(node: CharacterSet): void;
\r
231 onFlagsEnter?(node: Flags): void;
\r
232 onFlagsLeave?(node: Flags): void;
\r
233 onGroupEnter?(node: Group): void;
\r
234 onGroupLeave?(node: Group): void;
\r
235 onPatternEnter?(node: Pattern): void;
\r
236 onPatternLeave?(node: Pattern): void;
\r
237 onQuantifierEnter?(node: Quantifier): void;
\r
238 onQuantifierLeave?(node: Quantifier): void;
\r
239 onRegExpLiteralEnter?(node: RegExpLiteral): void;
\r
240 onRegExpLiteralLeave?(node: RegExpLiteral): void;
\r
245 declare module 'regexpp/ecma-versions' {
\r
246 export type EcmaVersion = 5 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022;
\r