blob: 5b6ff6fec5038b28bd343fc1cbb1513b29ffca0e [file] [log] [blame]
Yang Guo4fd355c2019-09-19 10:59:03 +02001// Generated by dts-bundle v0.7.3
2
3declare module 'regexpp' {
4 import * as AST from "regexpp/ast";
5 import { RegExpParser } from "regexpp/parser";
6 import { RegExpValidator } from "regexpp/validator";
7 import { RegExpVisitor } from "regexpp/visitor";
8 export { AST, RegExpParser, RegExpValidator };
9 export function parseRegExpLiteral(source: string | RegExp, options?: RegExpParser.Options): AST.RegExpLiteral;
10 export function validateRegExpLiteral(source: string, options?: RegExpValidator.Options): void;
11 export function visitRegExpAST(node: AST.Node, handlers: RegExpVisitor.Handlers): void;
12}
13
14declare module 'regexpp/ast' {
15 export type Node = BranchNode | LeafNode;
16 export type BranchNode = RegExpLiteral | Pattern | Alternative | Group | CapturingGroup | Quantifier | CharacterClass | LookaroundAssertion | CharacterClassRange;
17 export type LeafNode = BoundaryAssertion | CharacterSet | Character | Backreference | Flags;
18 export type Element = Assertion | Quantifier | QuantifiableElement;
19 export type QuantifiableElement = Group | CapturingGroup | CharacterClass | CharacterSet | Character | Backreference | LookaheadAssertion;
20 export type CharacterClassElement = EscapeCharacterSet | UnicodePropertyCharacterSet | Character | CharacterClassRange;
21 export interface NodeBase {
22 type: Node["type"];
23 parent: Node["parent"];
24 start: number;
25 end: number;
26 raw: string;
27 }
28 export interface RegExpLiteral extends NodeBase {
29 type: "RegExpLiteral";
30 parent: null;
31 pattern: Pattern;
32 flags: Flags;
33 }
34 export interface Pattern extends NodeBase {
35 type: "Pattern";
36 parent: RegExpLiteral | null;
37 alternatives: Alternative[];
38 }
39 export interface Alternative extends NodeBase {
40 type: "Alternative";
41 parent: Pattern | Group | CapturingGroup | LookaroundAssertion;
42 elements: Element[];
43 }
44 export interface Group extends NodeBase {
45 type: "Group";
46 parent: Alternative | Quantifier;
47 alternatives: Alternative[];
48 }
49 export interface CapturingGroup extends NodeBase {
50 type: "CapturingGroup";
51 parent: Alternative | Quantifier;
52 name: string | null;
53 alternatives: Alternative[];
54 references: Backreference[];
55 }
56 export type LookaroundAssertion = LookaheadAssertion | LookbehindAssertion;
57 export interface LookaheadAssertion extends NodeBase {
58 type: "Assertion";
59 parent: Alternative | Quantifier;
60 kind: "lookahead";
61 negate: boolean;
62 alternatives: Alternative[];
63 }
64 export interface LookbehindAssertion extends NodeBase {
65 type: "Assertion";
66 parent: Alternative;
67 kind: "lookbehind";
68 negate: boolean;
69 alternatives: Alternative[];
70 }
71 export interface Quantifier extends NodeBase {
72 type: "Quantifier";
73 parent: Alternative;
74 min: number;
75 max: number;
76 greedy: boolean;
77 element: QuantifiableElement;
78 }
79 export interface CharacterClass extends NodeBase {
80 type: "CharacterClass";
81 parent: Alternative | Quantifier;
82 negate: boolean;
83 elements: CharacterClassElement[];
84 }
85 export interface CharacterClassRange extends NodeBase {
86 type: "CharacterClassRange";
87 parent: CharacterClass;
88 min: Character;
89 max: Character;
90 }
91 export type Assertion = BoundaryAssertion | LookaroundAssertion;
92 export type BoundaryAssertion = EdgeAssertion | WordBoundaryAssertion;
93 export interface EdgeAssertion extends NodeBase {
94 type: "Assertion";
95 parent: Alternative | Quantifier;
96 kind: "start" | "end";
97 }
98 export interface WordBoundaryAssertion extends NodeBase {
99 type: "Assertion";
100 parent: Alternative | Quantifier;
101 kind: "word";
102 negate: boolean;
103 }
104 export type CharacterSet = AnyCharacterSet | EscapeCharacterSet | UnicodePropertyCharacterSet;
105 export interface AnyCharacterSet extends NodeBase {
106 type: "CharacterSet";
107 parent: Alternative | Quantifier;
108 kind: "any";
109 }
110 export interface EscapeCharacterSet extends NodeBase {
111 type: "CharacterSet";
112 parent: Alternative | Quantifier | CharacterClass;
113 kind: "digit" | "space" | "word";
114 negate: boolean;
115 }
116 export interface UnicodePropertyCharacterSet extends NodeBase {
117 type: "CharacterSet";
118 parent: Alternative | Quantifier | CharacterClass;
119 kind: "property";
120 key: string;
121 value: string | null;
122 negate: boolean;
123 }
124 export interface Character extends NodeBase {
125 type: "Character";
126 parent: Alternative | Quantifier | CharacterClass | CharacterClassRange;
127 value: number;
128 }
129 export interface Backreference extends NodeBase {
130 type: "Backreference";
131 parent: Alternative | Quantifier;
132 ref: number | string;
133 resolved: CapturingGroup;
134 }
135 export interface Flags extends NodeBase {
136 type: "Flags";
137 parent: RegExpLiteral | null;
138 dotAll: boolean;
139 global: boolean;
140 ignoreCase: boolean;
141 multiline: boolean;
142 sticky: boolean;
143 unicode: boolean;
144 }
145}
146
147declare module 'regexpp/parser' {
148 import { Flags, RegExpLiteral, Pattern } from "regexpp/ast";
149 export namespace RegExpParser {
150 interface Options {
151 strict?: boolean;
152 ecmaVersion?: 5 | 2015 | 2016 | 2017 | 2018;
153 }
154 }
155 export class RegExpParser {
156 constructor(options?: RegExpParser.Options);
157 parseLiteral(source: string, start?: number, end?: number): RegExpLiteral;
158 parseFlags(source: string, start?: number, end?: number): Flags;
159 parsePattern(source: string, start?: number, end?: number, uFlag?: boolean): Pattern;
160 }
161}
162
163declare module 'regexpp/validator' {
164 export namespace RegExpValidator {
165 interface Options {
166 strict?: boolean;
167 ecmaVersion?: 5 | 2015 | 2016 | 2017 | 2018;
168 onLiteralEnter?(start: number): void;
169 onLiteralLeave?(start: number, end: number): void;
170 onFlags?(start: number, end: number, global: boolean, ignoreCase: boolean, multiline: boolean, unicode: boolean, sticky: boolean, dotAll: boolean): void;
171 onPatternEnter?(start: number): void;
172 onPatternLeave?(start: number, end: number): void;
173 onDisjunctionEnter?(start: number): void;
174 onDisjunctionLeave?(start: number, end: number): void;
175 onAlternativeEnter?(start: number, index: number): void;
176 onAlternativeLeave?(start: number, end: number, index: number): void;
177 onGroupEnter?(start: number): void;
178 onGroupLeave?(start: number, end: number): void;
179 onCapturingGroupEnter?(start: number, name: string | null): void;
180 onCapturingGroupLeave?(start: number, end: number, name: string | null): void;
181 onQuantifier?(start: number, end: number, min: number, max: number, greedy: boolean): void;
182 onLookaroundAssertionEnter?(start: number, kind: "lookahead" | "lookbehind", negate: boolean): void;
183 onLookaroundAssertionLeave?(start: number, end: number, kind: "lookahead" | "lookbehind", negate: boolean): void;
184 onEdgeAssertion?(start: number, end: number, kind: "start" | "end"): void;
185 onWordBoundaryAssertion?(start: number, end: number, kind: "word", negate: boolean): void;
186 onAnyCharacterSet?(start: number, end: number, kind: "any"): void;
187 onEscapeCharacterSet?(start: number, end: number, kind: "digit" | "space" | "word", negate: boolean): void;
188 onUnicodePropertyCharacterSet?(start: number, end: number, kind: "property", key: string, value: string | null, negate: boolean): void;
189 onCharacter?(start: number, end: number, value: number): void;
190 onBackreference?(start: number, end: number, ref: number | string): void;
191 onCharacterClassEnter?(start: number, negate: boolean): void;
192 onCharacterClassLeave?(start: number, end: number, negate: boolean): void;
193 onCharacterClassRange?(start: number, end: number, min: number, max: number): void;
194 }
195 }
196 export class RegExpValidator {
197 constructor(options?: RegExpValidator.Options);
198 validateLiteral(source: string, start?: number, end?: number): void;
199 validateFlags(source: string, start?: number, end?: number): void;
200 validatePattern(source: string, start?: number, end?: number, uFlag?: boolean): void;
201 }
202}
203
204declare module 'regexpp/visitor' {
205 import { Alternative, Assertion, Backreference, CapturingGroup, Character, CharacterClass, CharacterClassRange, CharacterSet, Flags, Group, Node, Pattern, Quantifier, RegExpLiteral } from "regexpp/ast";
206 export class RegExpVisitor {
207 constructor(handlers: RegExpVisitor.Handlers);
208 visit(node: Node): void;
209 }
210 export namespace RegExpVisitor {
211 interface Handlers {
212 onAlternativeEnter?(node: Alternative): void;
213 onAlternativeLeave?(node: Alternative): void;
214 onAssertionEnter?(node: Assertion): void;
215 onAssertionLeave?(node: Assertion): void;
216 onBackreferenceEnter?(node: Backreference): void;
217 onBackreferenceLeave?(node: Backreference): void;
218 onCapturingGroupEnter?(node: CapturingGroup): void;
219 onCapturingGroupLeave?(node: CapturingGroup): void;
220 onCharacterEnter?(node: Character): void;
221 onCharacterLeave?(node: Character): void;
222 onCharacterClassEnter?(node: CharacterClass): void;
223 onCharacterClassLeave?(node: CharacterClass): void;
224 onCharacterClassRangeEnter?(node: CharacterClassRange): void;
225 onCharacterClassRangeLeave?(node: CharacterClassRange): void;
226 onCharacterSetEnter?(node: CharacterSet): void;
227 onCharacterSetLeave?(node: CharacterSet): void;
228 onFlagsEnter?(node: Flags): void;
229 onFlagsLeave?(node: Flags): void;
230 onGroupEnter?(node: Group): void;
231 onGroupLeave?(node: Group): void;
232 onPatternEnter?(node: Pattern): void;
233 onPatternLeave?(node: Pattern): void;
234 onQuantifierEnter?(node: Quantifier): void;
235 onQuantifierLeave?(node: Quantifier): void;
236 onRegExpLiteralEnter?(node: RegExpLiteral): void;
237 onRegExpLiteralLeave?(node: RegExpLiteral): void;
238 }
239 }
240}
241