UNPKG

7.21 kBTypeScriptView Raw
1// Type definitions for Acorn 4.0
2// Project: https://github.com/acornjs/acorn
3// Definitions by: RReverser <https://github.com/RReverser>, e-cloud <https://github.com/e-cloud>
4// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
5
6export as namespace acorn;
7export = acorn;
8import * as ESTree from 'estree';
9
10declare namespace acorn {
11 interface PlainObject {
12 [name: string]: any;
13 }
14
15 interface PluginsObject {
16 [name: string]: (p: Parser, config: any) => void;
17 }
18
19 interface Options {
20 ecmaVersion?: 3 | 5 | 6 | 7 | 8 | 2015 | 2016 | 2017 | undefined;
21 sourceType?: 'script' | 'module' | undefined;
22 onInsertedSemicolon?: ((lastTokEnd: number, lastTokEndLoc?: ESTree.Position) => void) | undefined;
23 onTrailingComma?: ((lastTokEnd: number, lastTokEndLoc?: ESTree.Position) => void) | undefined;
24 allowReserved?: boolean | undefined;
25 allowReturnOutsideFunction?: boolean | undefined;
26 allowImportExportEverywhere?: boolean | undefined;
27 allowHashBang?: boolean | undefined;
28 locations?: boolean | undefined;
29 onToken?: ((token: Token) => any) | Token[] | undefined;
30 onComment?: ((
31 isBlock: boolean, text: string, start: number, end: number, startLoc?: ESTree.Position,
32 endLoc?: ESTree.Position
33 ) => void) | Comment[] | undefined;
34 ranges?: boolean | undefined;
35 program?: ESTree.Program | undefined;
36 sourceFile?: string | undefined;
37 directSourceFile?: string | undefined;
38 preserveParens?: boolean | undefined;
39 plugins?: PlainObject | undefined;
40 }
41
42 class Parser {
43 constructor(options: Options, input: string, startPos?: number);
44
45 parse(): ESTree.Program;
46 }
47
48 const plugins: PluginsObject;
49
50 const defaultOptions: Options;
51
52 class Position implements ESTree.Position {
53 line: number;
54 column: number;
55
56 constructor(line: number, col: number);
57
58 offset(n: number): Position;
59 }
60
61 class SourceLocation implements ESTree.SourceLocation {
62 start: Position;
63 end: Position;
64 source?: string | null | undefined;
65
66 constructor(p: Parser, start: Position, end: Position);
67 }
68
69 function getLineInfo(input: string, offset: number): ESTree.Position;
70
71 class Node {
72 type: string;
73 start: number;
74 end: number;
75 loc?: ESTree.SourceLocation | undefined;
76 sourceFile?: string | undefined;
77 range?: [number, number] | undefined;
78
79 constructor(parser: Parser, pos: number, loc: number);
80 }
81
82 interface TokeTypeConfig {
83 keyword: string;
84 beforeExpr?: boolean | undefined;
85 startsExpr?: boolean | undefined;
86 isLoop?: boolean | undefined;
87 isAssign?: boolean | undefined;
88 prefix?: boolean | undefined;
89 postfix?: boolean | undefined;
90 binop?: number | undefined;
91 }
92
93 class TokenType {
94 label: string;
95 keyword: string;
96 beforeExpr: boolean;
97 startsExpr: boolean;
98 isLoop: boolean;
99 isAssign: boolean;
100 prefix: boolean;
101 postfix: boolean;
102 binop: number;
103 updateContext: (prevType: TokenType) => void;
104
105 constructor(label: string, conf?: TokeTypeConfig);
106 }
107
108 const tokTypes: {
109 num: TokenType;
110 regexp: TokenType;
111 string: TokenType;
112 name: TokenType;
113 eof: TokenType;
114 bracketL: TokenType;
115 bracketR: TokenType;
116 braceL: TokenType;
117 braceR: TokenType;
118 parenL: TokenType;
119 parenR: TokenType;
120 comma: TokenType;
121 semi: TokenType;
122 colon: TokenType;
123 dot: TokenType;
124 question: TokenType;
125 arrow: TokenType;
126 template: TokenType;
127 ellipsis: TokenType;
128 backQuote: TokenType;
129 dollarBraceL: TokenType;
130 eq: TokenType;
131 assign: TokenType;
132 incDec: TokenType;
133 prefix: TokenType;
134 logicalOR: TokenType;
135 logicalAND: TokenType;
136 bitwiseOR: TokenType;
137 bitwiseXOR: TokenType;
138 bitwiseAND: TokenType;
139 equality: TokenType;
140 relational: TokenType;
141 bitShift: TokenType;
142 plusMin: TokenType;
143 modulo: TokenType;
144 star: TokenType;
145 slash: TokenType;
146 starstar: TokenType;
147 _break: TokenType;
148 _case: TokenType;
149 _catch: TokenType;
150 _continue: TokenType;
151 _debugger: TokenType;
152 _default: TokenType;
153 _do: TokenType;
154 _else: TokenType;
155 _finally: TokenType;
156 _for: TokenType;
157 _function: TokenType;
158 _if: TokenType;
159 _return: TokenType;
160 _switch: TokenType;
161 _throw: TokenType;
162 _try: TokenType;
163 _var: TokenType;
164 _const: TokenType;
165 _while: TokenType;
166 _with: TokenType;
167 _new: TokenType;
168 _this: TokenType;
169 _super: TokenType;
170 _class: TokenType;
171 _extends: TokenType;
172 _export: TokenType;
173 _import: TokenType;
174 _null: TokenType;
175 _true: TokenType;
176 _false: TokenType;
177 _in: TokenType;
178 _instanceof: TokenType;
179 _typeof: TokenType;
180 _void: TokenType;
181 _delete: TokenType;
182 };
183
184 class TokContext {
185 constructor(token: string, isExpr: boolean, preserveSpace: boolean, override: (p: Parser) => void);
186 }
187
188 const tokContexts: {
189 b_stat: TokContext;
190 b_expr: TokContext;
191 b_tmpl: TokContext;
192 p_stat: TokContext;
193 p_expr: TokContext;
194 q_tmpl: TokContext;
195 f_expr: TokContext;
196 };
197
198 function isIdentifierStart(code: number, astral?: boolean): boolean;
199
200 function isIdentifierChar(code: number, astral?: boolean): boolean;
201
202 interface AbstractToken {
203 start: number;
204 end: number;
205 loc?: SourceLocation | undefined;
206 range?: [number, number] | undefined;
207 }
208
209 interface Comment extends AbstractToken {
210 type: string;
211 value: string;
212 }
213
214 class Token {
215 constructor(p: Parser);
216 }
217
218 interface Token extends AbstractToken {
219 type: TokenType;
220 value: any;
221 }
222
223 function isNewLine(code: number): boolean;
224
225 const lineBreak: RegExp;
226
227 const lineBreakG: RegExp;
228
229 const version: string;
230
231 // TODO: rename type.
232 type IParse = (input: string, options?: Options) => ESTree.Program;
233
234 const parse: IParse;
235
236 function parseExpressionAt(input: string, pos?: number, options?: Options): ESTree.Expression;
237
238 interface ITokenizer {
239 getToken(): Token;
240 [Symbol.iterator](): Iterator<Token>;
241 }
242
243 function tokenizer(input: string, options: Options): ITokenizer;
244
245 let parse_dammit: IParse | undefined;
246 let LooseParser: ILooseParserClass | undefined;
247 let pluginsLoose: PluginsObject | undefined;
248
249 type ILooseParserClass = new (input: string, options?: Options) => ILooseParser;
250
251 interface ILooseParser {}
252
253 function addLooseExports(parse: IParse, parser: ILooseParserClass, plugins: PluginsObject): void;
254}