UNPKG

11.2 kBTypeScriptView Raw
1// 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 hasIndices: boolean;
141 ignoreCase: boolean;
142 multiline: boolean;
143 sticky: boolean;
144 unicode: boolean;
145 }
146}
147
148declare module 'regexpp/parser' {
149 import { Flags, RegExpLiteral, Pattern } from "regexpp/ast";
150 import { EcmaVersion } from "regexpp/ecma-versions";
151 export namespace RegExpParser {
152 interface Options {
153 strict?: boolean;
154 ecmaVersion?: EcmaVersion;
155 }
156 }
157 export class RegExpParser {
158 constructor(options?: RegExpParser.Options);
159 parseLiteral(source: string, start?: number, end?: number): RegExpLiteral;
160 parseFlags(source: string, start?: number, end?: number): Flags;
161 parsePattern(source: string, start?: number, end?: number, uFlag?: boolean): Pattern;
162 }
163}
164
165declare module 'regexpp/validator' {
166 import { EcmaVersion } from "regexpp/ecma-versions";
167 export namespace RegExpValidator {
168 interface Options {
169 strict?: boolean;
170 ecmaVersion?: EcmaVersion;
171 onLiteralEnter?(start: number): void;
172 onLiteralLeave?(start: number, end: number): void;
173 onFlags?(start: number, end: number, global: boolean, ignoreCase: boolean, multiline: boolean, unicode: boolean, sticky: boolean, dotAll: boolean, hasIndices: boolean): void;
174 onPatternEnter?(start: number): void;
175 onPatternLeave?(start: number, end: number): void;
176 onDisjunctionEnter?(start: number): void;
177 onDisjunctionLeave?(start: number, end: number): void;
178 onAlternativeEnter?(start: number, index: number): void;
179 onAlternativeLeave?(start: number, end: number, index: number): void;
180 onGroupEnter?(start: number): void;
181 onGroupLeave?(start: number, end: number): void;
182 onCapturingGroupEnter?(start: number, name: string | null): void;
183 onCapturingGroupLeave?(start: number, end: number, name: string | null): void;
184 onQuantifier?(start: number, end: number, min: number, max: number, greedy: boolean): void;
185 onLookaroundAssertionEnter?(start: number, kind: "lookahead" | "lookbehind", negate: boolean): void;
186 onLookaroundAssertionLeave?(start: number, end: number, kind: "lookahead" | "lookbehind", negate: boolean): void;
187 onEdgeAssertion?(start: number, end: number, kind: "start" | "end"): void;
188 onWordBoundaryAssertion?(start: number, end: number, kind: "word", negate: boolean): void;
189 onAnyCharacterSet?(start: number, end: number, kind: "any"): void;
190 onEscapeCharacterSet?(start: number, end: number, kind: "digit" | "space" | "word", negate: boolean): void;
191 onUnicodePropertyCharacterSet?(start: number, end: number, kind: "property", key: string, value: string | null, negate: boolean): void;
192 onCharacter?(start: number, end: number, value: number): void;
193 onBackreference?(start: number, end: number, ref: number | string): void;
194 onCharacterClassEnter?(start: number, negate: boolean): void;
195 onCharacterClassLeave?(start: number, end: number, negate: boolean): void;
196 onCharacterClassRange?(start: number, end: number, min: number, max: number): void;
197 }
198 }
199 export class RegExpValidator {
200 constructor(options?: RegExpValidator.Options);
201 validateLiteral(source: string, start?: number, end?: number): void;
202 validateFlags(source: string, start?: number, end?: number): void;
203 validatePattern(source: string, start?: number, end?: number, uFlag?: boolean): void;
204 }
205}
206
207declare module 'regexpp/visitor' {
208 import { Alternative, Assertion, Backreference, CapturingGroup, Character, CharacterClass, CharacterClassRange, CharacterSet, Flags, Group, Node, Pattern, Quantifier, RegExpLiteral } from "regexpp/ast";
209 export class RegExpVisitor {
210 constructor(handlers: RegExpVisitor.Handlers);
211 visit(node: Node): void;
212 }
213 export namespace RegExpVisitor {
214 interface Handlers {
215 onAlternativeEnter?(node: Alternative): void;
216 onAlternativeLeave?(node: Alternative): void;
217 onAssertionEnter?(node: Assertion): void;
218 onAssertionLeave?(node: Assertion): void;
219 onBackreferenceEnter?(node: Backreference): void;
220 onBackreferenceLeave?(node: Backreference): void;
221 onCapturingGroupEnter?(node: CapturingGroup): void;
222 onCapturingGroupLeave?(node: CapturingGroup): void;
223 onCharacterEnter?(node: Character): void;
224 onCharacterLeave?(node: Character): void;
225 onCharacterClassEnter?(node: CharacterClass): void;
226 onCharacterClassLeave?(node: CharacterClass): void;
227 onCharacterClassRangeEnter?(node: CharacterClassRange): void;
228 onCharacterClassRangeLeave?(node: CharacterClassRange): void;
229 onCharacterSetEnter?(node: CharacterSet): void;
230 onCharacterSetLeave?(node: CharacterSet): void;
231 onFlagsEnter?(node: Flags): void;
232 onFlagsLeave?(node: Flags): void;
233 onGroupEnter?(node: Group): void;
234 onGroupLeave?(node: Group): void;
235 onPatternEnter?(node: Pattern): void;
236 onPatternLeave?(node: Pattern): void;
237 onQuantifierEnter?(node: Quantifier): void;
238 onQuantifierLeave?(node: Quantifier): void;
239 onRegExpLiteralEnter?(node: RegExpLiteral): void;
240 onRegExpLiteralLeave?(node: RegExpLiteral): void;
241 }
242 }
243}
244
245declare module 'regexpp/ecma-versions' {
246 export type EcmaVersion = 5 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022;
247}
248