UNPKG

18.9 kBTypeScriptView Raw
1/// <reference lib="es2015" />
2
3import { RawSourceMap } from 'source-map';
4
5/** @deprecated since this versions basically do not exist */
6type ECMA_UNOFFICIAL = 6 | 7 | 8 | 9;
7
8export type ECMA = 5 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | ECMA_UNOFFICIAL;
9
10export interface ParseOptions {
11 bare_returns?: boolean;
12 ecma?: ECMA;
13 html5_comments?: boolean;
14 shebang?: boolean;
15}
16
17export interface CompressOptions {
18 arguments?: boolean;
19 arrows?: boolean;
20 booleans_as_integers?: boolean;
21 booleans?: boolean;
22 collapse_vars?: boolean;
23 comparisons?: boolean;
24 computed_props?: boolean;
25 conditionals?: boolean;
26 dead_code?: boolean;
27 defaults?: boolean;
28 directives?: boolean;
29 drop_console?: boolean;
30 drop_debugger?: boolean;
31 ecma?: ECMA;
32 evaluate?: boolean;
33 expression?: boolean;
34 global_defs?: object;
35 hoist_funs?: boolean;
36 hoist_props?: boolean;
37 hoist_vars?: boolean;
38 ie8?: boolean;
39 if_return?: boolean;
40 inline?: boolean | InlineFunctions;
41 join_vars?: boolean;
42 keep_classnames?: boolean | RegExp;
43 keep_fargs?: boolean;
44 keep_fnames?: boolean | RegExp;
45 keep_infinity?: boolean;
46 loops?: boolean;
47 module?: boolean;
48 negate_iife?: boolean;
49 passes?: number;
50 properties?: boolean;
51 pure_funcs?: string[];
52 pure_getters?: boolean | 'strict';
53 reduce_funcs?: boolean;
54 reduce_vars?: boolean;
55 sequences?: boolean | number;
56 side_effects?: boolean;
57 switches?: boolean;
58 toplevel?: boolean;
59 top_retain?: null | string | string[] | RegExp;
60 typeofs?: boolean;
61 unsafe_arrows?: boolean;
62 unsafe?: boolean;
63 unsafe_comps?: boolean;
64 unsafe_Function?: boolean;
65 unsafe_math?: boolean;
66 unsafe_methods?: boolean;
67 unsafe_proto?: boolean;
68 unsafe_regexp?: boolean;
69 unsafe_undefined?: boolean;
70 unused?: boolean;
71 warnings?: boolean;
72}
73
74export enum InlineFunctions {
75 Disabled = 0,
76 SimpleFunctions = 1,
77 WithArguments = 2,
78 WithArgumentsAndVariables = 3
79}
80
81export interface MangleOptions {
82 eval?: boolean;
83 keep_classnames?: boolean | RegExp;
84 keep_fnames?: boolean | RegExp;
85 module?: boolean;
86 properties?: boolean | ManglePropertiesOptions;
87 reserved?: string[];
88 safari10?: boolean;
89 toplevel?: boolean;
90}
91
92export interface ManglePropertiesOptions {
93 builtins?: boolean;
94 debug?: boolean;
95 keep_quoted?: boolean;
96 regex?: RegExp | string;
97 reserved?: string[];
98}
99
100export interface OutputOptions {
101 ascii_only?: boolean;
102 beautify?: boolean;
103 braces?: boolean;
104 comments?: boolean | 'all' | 'some' | RegExp | Function;
105 ecma?: ECMA;
106 ie8?: boolean;
107 indent_level?: number;
108 indent_start?: number;
109 inline_script?: boolean;
110 keep_quoted_props?: boolean;
111 max_line_len?: number | false;
112 preamble?: string;
113 quote_keys?: boolean;
114 quote_style?: OutputQuoteStyle;
115 safari10?: boolean;
116 semicolons?: boolean;
117 shebang?: boolean;
118 shorthand?: boolean;
119 source_map?: SourceMapOptions;
120 webkit?: boolean;
121 width?: number;
122 wrap_iife?: boolean;
123}
124
125export enum OutputQuoteStyle {
126 PreferDouble = 0,
127 AlwaysSingle = 1,
128 AlwaysDouble = 2,
129 AlwaysOriginal = 3
130}
131
132export interface MinifyOptions {
133 compress?: boolean | CompressOptions;
134 ecma?: ECMA;
135 ie8?: boolean;
136 keep_classnames?: boolean | RegExp;
137 keep_fnames?: boolean | RegExp;
138 mangle?: boolean | MangleOptions;
139 module?: boolean;
140 nameCache?: object;
141 output?: OutputOptions;
142 parse?: ParseOptions;
143 safari10?: boolean;
144 sourceMap?: boolean | SourceMapOptions;
145 toplevel?: boolean;
146 warnings?: boolean | 'verbose';
147}
148
149export interface MinifyOutput {
150 ast?: AST_Node;
151 code?: string;
152 error?: Error;
153 map?: RawSourceMap | string;
154 warnings?: string[];
155}
156
157export interface SourceMapOptions {
158 content?: RawSourceMap;
159 includeSources?: boolean;
160 filename?: string;
161 root?: string;
162 url?: string | 'inline';
163}
164
165declare function parse(text: string, options?: ParseOptions): AST_Node;
166
167export class TreeWalker {
168 constructor(callback: (node: AST_Node, descend?: (node: AST_Node) => void) => boolean | undefined);
169 directives: object;
170 find_parent(type: AST_Node): AST_Node | undefined;
171 has_directive(type: string): boolean;
172 loopcontrol_target(node: AST_Node): AST_Node | undefined;
173 parent(n: number): AST_Node | undefined;
174 pop(): void;
175 push(node: AST_Node): void;
176 self(): AST_Node | undefined;
177 stack: AST_Node[];
178 visit: (node: AST_Node, descend: boolean) => any;
179}
180
181export class TreeTransformer extends TreeWalker {
182 constructor(
183 before: (node: AST_Node, descend?: (node: AST_Node, tw: TreeWalker) => void, in_list?: boolean) => AST_Node | undefined,
184 after?: (node: AST_Node, in_list?: boolean) => AST_Node | undefined
185 );
186 before: (node: AST_Node) => AST_Node;
187 after?: (node: AST_Node) => AST_Node;
188}
189
190export function push_uniq<T>(array: T[], el: T): void;
191
192export function minify(files: string | string[] | { [file: string]: string } | AST_Node, options?: MinifyOptions): MinifyOutput;
193
194export class AST_Node {
195 constructor(props?: object);
196 static BASE?: AST_Node;
197 static PROPS: string[];
198 static SELF_PROPS: string[];
199 static SUBCLASSES: AST_Node[];
200 static documentation: string;
201 static propdoc?: Record<string, string>;
202 static expressions?: AST_Node[];
203 static warn?: (text: string, props: any) => void;
204 static from_mozilla_ast?: (node: AST_Node) => any;
205 walk: (visitor: TreeWalker) => void;
206 print_to_string: (options?: OutputOptions) => string;
207 transform: (tt: TreeTransformer, in_list?: boolean) => AST_Node;
208 TYPE: string;
209 CTOR: typeof AST_Node;
210}
211
212declare class SymbolDef {
213 constructor(scope?: AST_Scope, orig?: object, init?: object);
214 name: string;
215 orig: AST_SymbolRef[];
216 init: AST_SymbolRef;
217 eliminated: number;
218 scope: AST_Scope;
219 references: AST_SymbolRef[];
220 replaced: number;
221 global: boolean;
222 export: boolean;
223 mangled_name: null | string;
224 undeclared: boolean;
225 id: number;
226}
227
228type ArgType = AST_SymbolFunarg | AST_DefaultAssign | AST_Destructuring | AST_Expansion;
229
230declare class AST_Statement extends AST_Node {
231 constructor(props?: object);
232}
233
234declare class AST_Debugger extends AST_Statement {
235 constructor(props?: object);
236}
237
238declare class AST_Directive extends AST_Statement {
239 constructor(props?: object);
240 value: string;
241 quote: string;
242}
243
244declare class AST_SimpleStatement extends AST_Statement {
245 constructor(props?: object);
246 body: AST_Node[];
247}
248
249declare class AST_Block extends AST_Statement {
250 constructor(props?: object);
251 body: AST_Node[];
252 block_scope: AST_Scope | null;
253}
254
255declare class AST_BlockStatement extends AST_Block {
256 constructor(props?: object);
257}
258
259declare class AST_Scope extends AST_Block {
260 constructor(props?: object);
261 variables: any;
262 functions: any;
263 uses_with: boolean;
264 uses_eval: boolean;
265 parent_scope: AST_Scope | null;
266 enclosed: any;
267 cname: any;
268}
269
270declare class AST_Toplevel extends AST_Scope {
271 constructor(props?: object);
272 globals: any;
273}
274
275declare class AST_Lambda extends AST_Scope {
276 constructor(props?: object);
277 name: AST_SymbolDeclaration | null;
278 argnames: ArgType[];
279 uses_arguments: boolean;
280 is_generator: boolean;
281 async: boolean;
282}
283
284declare class AST_Accessor extends AST_Lambda {
285 constructor(props?: object);
286}
287
288declare class AST_Function extends AST_Lambda {
289 constructor(props?: object);
290}
291
292declare class AST_Arrow extends AST_Lambda {
293 constructor(props?: object);
294}
295
296declare class AST_Defun extends AST_Lambda {
297 constructor(props?: object);
298}
299
300declare class AST_Class extends AST_Scope {
301 constructor(props?: object);
302 name: AST_SymbolClass | AST_SymbolDefClass | null;
303 extends: AST_Node | null;
304 properties: AST_ObjectProperty[];
305}
306
307declare class AST_DefClass extends AST_Class {
308 constructor(props?: object);
309}
310
311declare class AST_ClassExpression extends AST_Class {
312 constructor(props?: object);
313}
314
315declare class AST_Switch extends AST_Block {
316 constructor(props?: object);
317 expression: AST_Node;
318}
319
320declare class AST_SwitchBranch extends AST_Block {
321 constructor(props?: object);
322}
323
324declare class AST_Default extends AST_SwitchBranch {
325 constructor(props?: object);
326}
327
328declare class AST_Case extends AST_SwitchBranch {
329 constructor(props?: object);
330 expression: AST_Node;
331}
332
333declare class AST_Try extends AST_Block {
334 constructor(props?: object);
335 bcatch: AST_Catch;
336 bfinally: null | AST_Finally;
337}
338
339declare class AST_Catch extends AST_Block {
340 constructor(props?: object);
341 argname: ArgType;
342}
343
344declare class AST_Finally extends AST_Block {
345 constructor(props?: object);
346}
347
348declare class AST_EmptyStatement extends AST_Statement {
349 constructor(props?: object);
350}
351
352declare class AST_StatementWithBody extends AST_Statement {
353 constructor(props?: object);
354 body: AST_Node[];
355}
356
357declare class AST_LabeledStatement extends AST_StatementWithBody {
358 constructor(props?: object);
359 label: AST_Label;
360}
361
362declare class AST_IterationStatement extends AST_StatementWithBody {
363 constructor(props?: object);
364 block_scope: AST_Scope | null;
365}
366
367declare class AST_DWLoop extends AST_IterationStatement {
368 constructor(props?: object);
369 condition: AST_Node;
370}
371
372declare class AST_Do extends AST_DWLoop {
373 constructor(props?: object);
374}
375
376declare class AST_While extends AST_DWLoop {
377 constructor(props?: object);
378}
379
380declare class AST_For extends AST_IterationStatement {
381 constructor(props?: object);
382 init: AST_Node | null;
383 condition: AST_Node | null;
384 step: AST_Node | null;
385}
386
387declare class AST_ForIn extends AST_IterationStatement {
388 constructor(props?: object);
389 init: AST_Node | null;
390 object: AST_Node;
391}
392
393declare class AST_ForOf extends AST_ForIn {
394 constructor(props?: object);
395 await: boolean;
396}
397
398declare class AST_With extends AST_StatementWithBody {
399 constructor(props?: object);
400 expression: AST_Node;
401}
402
403declare class AST_If extends AST_StatementWithBody {
404 constructor(props?: object);
405 condition: AST_Node;
406 alternative: AST_Node | null;
407}
408
409declare class AST_Jump extends AST_Statement {
410 constructor(props?: object);
411}
412
413declare class AST_Exit extends AST_Jump {
414 constructor(props?: object);
415 value: AST_Node | null;
416}
417
418declare class AST_Return extends AST_Exit {
419 constructor(props?: object);
420}
421
422declare class AST_Throw extends AST_Exit {
423 constructor(props?: object);
424}
425
426declare class AST_LoopControl extends AST_Jump {
427 constructor(props?: object);
428 label: null | AST_LabelRef;
429}
430
431declare class AST_Break extends AST_LoopControl {
432 constructor(props?: object);
433}
434
435declare class AST_Continue extends AST_LoopControl {
436 constructor(props?: object);
437}
438
439declare class AST_Definitions extends AST_Statement {
440 constructor(props?: object);
441 definitions: AST_VarDef[];
442}
443
444declare class AST_Var extends AST_Definitions {
445 constructor(props?: object);
446}
447
448declare class AST_Let extends AST_Definitions {
449 constructor(props?: object);
450}
451
452declare class AST_Const extends AST_Definitions {
453 constructor(props?: object);
454}
455
456declare class AST_Export extends AST_Statement {
457 constructor(props?: object);
458 exported_definition: AST_Definitions | AST_Lambda | AST_DefClass | null;
459 exported_value: AST_Node | null;
460 is_default: boolean;
461 exported_names: AST_NameMapping[];
462 module_name: AST_String;
463}
464
465declare class AST_Expansion extends AST_Node {
466 constructor(props?: object);
467 expression: AST_Node;
468}
469
470declare class AST_Destructuring extends AST_Node {
471 constructor(props?: object);
472 names: AST_Node[];
473 is_array: boolean;
474}
475
476declare class AST_PrefixedTemplateString extends AST_Node {
477 constructor(props?: object);
478 template_string: AST_TemplateString;
479 prefix: AST_Node;
480}
481
482declare class AST_TemplateString extends AST_Node {
483 constructor(props?: object);
484 segments: AST_Node[];
485}
486
487declare class AST_TemplateSegment extends AST_Node {
488 constructor(props?: object);
489 value: string;
490 raw: string;
491}
492
493declare class AST_NameMapping extends AST_Node {
494 constructor(props?: object);
495 foreign_name: AST_Symbol;
496 name: AST_SymbolExport | AST_SymbolImport;
497}
498
499declare class AST_Import extends AST_Node {
500 constructor(props?: object);
501 imported_name: null | AST_SymbolImport;
502 imported_names: AST_NameMapping[];
503 module_name: AST_String;
504}
505
506declare class AST_VarDef extends AST_Node {
507 constructor(props?: object);
508 name: AST_Destructuring | AST_SymbolConst | AST_SymbolLet | AST_SymbolVar;
509 value: AST_Node | null;
510}
511
512declare class AST_Call extends AST_Node {
513 constructor(props?: object);
514 expression: AST_Node;
515 args: AST_Node[];
516}
517
518declare class AST_New extends AST_Call {
519 constructor(props?: object);
520}
521
522declare class AST_Sequence extends AST_Node {
523 constructor(props?: object);
524 expressions: AST_Node[];
525}
526
527declare class AST_PropAccess extends AST_Node {
528 constructor(props?: object);
529 expression: AST_Node;
530 property: AST_Node | string;
531}
532
533declare class AST_Dot extends AST_PropAccess {
534 constructor(props?: object);
535}
536
537declare class AST_Sub extends AST_PropAccess {
538 constructor(props?: object);
539}
540
541declare class AST_Unary extends AST_Node {
542 constructor(props?: object);
543 operator: string;
544 expression: AST_Node;
545}
546
547declare class AST_UnaryPrefix extends AST_Unary {
548 constructor(props?: object);
549}
550
551declare class AST_UnaryPostfix extends AST_Unary {
552 constructor(props?: object);
553}
554
555declare class AST_Binary extends AST_Node {
556 constructor(props?: object);
557 operator: string;
558 left: AST_Node;
559 right: AST_Node;
560}
561
562declare class AST_Assign extends AST_Binary {
563 constructor(props?: object);
564}
565
566declare class AST_DefaultAssign extends AST_Binary {
567 constructor(props?: object);
568}
569
570declare class AST_Conditional extends AST_Node {
571 constructor(props?: object);
572 condition: AST_Node;
573 consequent: AST_Node;
574 alternative: AST_Node;
575}
576
577declare class AST_Array extends AST_Node {
578 constructor(props?: object);
579 elements: AST_Node[];
580}
581
582declare class AST_Object extends AST_Node {
583 constructor(props?: object);
584 properties: AST_ObjectProperty[];
585}
586
587declare class AST_ObjectProperty extends AST_Node {
588 constructor(props?: object);
589 key: string | number | AST_Node;
590 value: AST_Node;
591}
592
593declare class AST_ObjectKeyVal extends AST_ObjectProperty {
594 constructor(props?: object);
595 quote: string;
596}
597
598declare class AST_ObjectSetter extends AST_ObjectProperty {
599 constructor(props?: object);
600 quote: string;
601 static: boolean;
602}
603
604declare class AST_ObjectGetter extends AST_ObjectProperty {
605 constructor(props?: object);
606 quote: string;
607 static: boolean;
608}
609
610declare class AST_ConciseMethod extends AST_ObjectProperty {
611 constructor(props?: object);
612 quote: string;
613 static: boolean;
614 is_generator: boolean;
615 async: boolean;
616}
617
618declare class AST_Symbol extends AST_Node {
619 constructor(props?: object);
620 scope: AST_Scope;
621 name: string;
622 thedef: SymbolDef;
623}
624
625declare class AST_SymbolDeclaration extends AST_Symbol {
626 constructor(props?: object);
627 init: AST_Node | null;
628}
629
630declare class AST_SymbolVar extends AST_SymbolDeclaration {
631 constructor(props?: object);
632}
633
634declare class AST_SymbolFunarg extends AST_SymbolVar {
635 constructor(props?: object);
636}
637
638declare class AST_SymbolBlockDeclaration extends AST_SymbolDeclaration {
639 constructor(props?: object);
640}
641
642declare class AST_SymbolConst extends AST_SymbolBlockDeclaration {
643 constructor(props?: object);
644}
645
646declare class AST_SymbolLet extends AST_SymbolBlockDeclaration {
647 constructor(props?: object);
648}
649
650declare class AST_SymbolDefClass extends AST_SymbolBlockDeclaration {
651 constructor(props?: object);
652}
653
654declare class AST_SymbolCatch extends AST_SymbolBlockDeclaration {
655 constructor(props?: object);
656}
657
658declare class AST_SymbolImport extends AST_SymbolBlockDeclaration {
659 constructor(props?: object);
660}
661
662declare class AST_SymbolDefun extends AST_SymbolDeclaration {
663 constructor(props?: object);
664}
665
666declare class AST_SymbolLambda extends AST_SymbolDeclaration {
667 constructor(props?: object);
668}
669
670declare class AST_SymbolClass extends AST_SymbolDeclaration {
671 constructor(props?: object);
672}
673
674declare class AST_SymbolMethod extends AST_Symbol {
675 constructor(props?: object);
676}
677
678declare class AST_SymbolImportForeign extends AST_Symbol {
679 constructor(props?: object);
680}
681
682declare class AST_Label extends AST_Symbol {
683 constructor(props?: object);
684 references: AST_LoopControl | null;
685}
686
687declare class AST_SymbolRef extends AST_Symbol {
688 constructor(props?: object);
689}
690
691declare class AST_SymbolExport extends AST_SymbolRef {
692 constructor(props?: object);
693}
694
695declare class AST_SymbolExportForeign extends AST_Symbol {
696 constructor(props?: object);
697}
698
699declare class AST_LabelRef extends AST_Symbol {
700 constructor(props?: object);
701}
702
703declare class AST_This extends AST_Symbol {
704 constructor(props?: object);
705}
706
707declare class AST_Super extends AST_This {
708 constructor(props?: object);
709}
710
711declare class AST_NewTarget extends AST_Node {
712 constructor(props?: object);
713}
714
715declare class AST_Constant extends AST_Node {
716 constructor(props?: object);
717}
718
719declare class AST_String extends AST_Constant {
720 constructor(props?: object);
721 value: string;
722 quote: string;
723}
724
725declare class AST_Number extends AST_Constant {
726 constructor(props?: object);
727 value: number;
728 literal: string;
729}
730
731declare class AST_RegExp extends AST_Constant {
732 constructor(props?: object);
733 value: {
734 source: string,
735 flags: string
736 };
737}
738
739declare class AST_Atom extends AST_Constant {
740 constructor(props?: object);
741}
742
743declare class AST_Null extends AST_Atom {
744 constructor(props?: object);
745}
746
747declare class AST_NaN extends AST_Atom {
748 constructor(props?: object);
749}
750
751declare class AST_Undefined extends AST_Atom {
752 constructor(props?: object);
753}
754
755declare class AST_Hole extends AST_Atom {
756 constructor(props?: object);
757}
758
759declare class AST_Infinity extends AST_Atom {
760 constructor(props?: object);
761}
762
763declare class AST_Boolean extends AST_Atom {
764 constructor(props?: object);
765}
766
767declare class AST_False extends AST_Boolean {
768 constructor(props?: object);
769}
770
771declare class AST_True extends AST_Boolean {
772 constructor(props?: object);
773}
774
775declare class AST_Await extends AST_Node {
776 constructor(props?: object);
777 expression: AST_Node;
778}
779
780declare class AST_Yield extends AST_Node {
781 constructor(props?: object);
782 expression: AST_Node;
783 is_star: boolean;
784}