You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
210 lines
6.0 KiB
210 lines
6.0 KiB
/// <reference lib="es2015" /> |
|
|
|
import { SectionedSourceMapInput, EncodedSourceMap, DecodedSourceMap } from '@jridgewell/source-map'; |
|
|
|
export type ECMA = 5 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020; |
|
|
|
export interface ParseOptions { |
|
bare_returns?: boolean; |
|
/** @deprecated legacy option. Currently, all supported EcmaScript is valid to parse. */ |
|
ecma?: ECMA; |
|
html5_comments?: boolean; |
|
shebang?: boolean; |
|
} |
|
|
|
export interface CompressOptions { |
|
arguments?: boolean; |
|
arrows?: boolean; |
|
booleans_as_integers?: boolean; |
|
booleans?: boolean; |
|
collapse_vars?: boolean; |
|
comparisons?: boolean; |
|
computed_props?: boolean; |
|
conditionals?: boolean; |
|
dead_code?: boolean; |
|
defaults?: boolean; |
|
directives?: boolean; |
|
drop_console?: boolean; |
|
drop_debugger?: boolean; |
|
ecma?: ECMA; |
|
evaluate?: boolean; |
|
expression?: boolean; |
|
global_defs?: object; |
|
hoist_funs?: boolean; |
|
hoist_props?: boolean; |
|
hoist_vars?: boolean; |
|
ie8?: boolean; |
|
if_return?: boolean; |
|
inline?: boolean | InlineFunctions; |
|
join_vars?: boolean; |
|
keep_classnames?: boolean | RegExp; |
|
keep_fargs?: boolean; |
|
keep_fnames?: boolean | RegExp; |
|
keep_infinity?: boolean; |
|
loops?: boolean; |
|
module?: boolean; |
|
negate_iife?: boolean; |
|
passes?: number; |
|
properties?: boolean; |
|
pure_funcs?: string[]; |
|
pure_getters?: boolean | 'strict'; |
|
reduce_funcs?: boolean; |
|
reduce_vars?: boolean; |
|
sequences?: boolean | number; |
|
side_effects?: boolean; |
|
switches?: boolean; |
|
toplevel?: boolean; |
|
top_retain?: null | string | string[] | RegExp; |
|
typeofs?: boolean; |
|
unsafe_arrows?: boolean; |
|
unsafe?: boolean; |
|
unsafe_comps?: boolean; |
|
unsafe_Function?: boolean; |
|
unsafe_math?: boolean; |
|
unsafe_symbols?: boolean; |
|
unsafe_methods?: boolean; |
|
unsafe_proto?: boolean; |
|
unsafe_regexp?: boolean; |
|
unsafe_undefined?: boolean; |
|
unused?: boolean; |
|
} |
|
|
|
export enum InlineFunctions { |
|
Disabled = 0, |
|
SimpleFunctions = 1, |
|
WithArguments = 2, |
|
WithArgumentsAndVariables = 3 |
|
} |
|
|
|
export interface MangleOptions { |
|
eval?: boolean; |
|
keep_classnames?: boolean | RegExp; |
|
keep_fnames?: boolean | RegExp; |
|
module?: boolean; |
|
nth_identifier?: SimpleIdentifierMangler | WeightedIdentifierMangler; |
|
properties?: boolean | ManglePropertiesOptions; |
|
reserved?: string[]; |
|
safari10?: boolean; |
|
toplevel?: boolean; |
|
} |
|
|
|
/** |
|
* An identifier mangler for which the output is invariant with respect to the source code. |
|
*/ |
|
export interface SimpleIdentifierMangler { |
|
/** |
|
* Obtains the nth most favored (usually shortest) identifier to rename a variable to. |
|
* The mangler will increment n and retry until the return value is not in use in scope, and is not a reserved word. |
|
* This function is expected to be stable; Evaluating get(n) === get(n) should always return true. |
|
* @param n The ordinal of the identifier. |
|
*/ |
|
get(n: number): string; |
|
} |
|
|
|
/** |
|
* An identifier mangler that leverages character frequency analysis to determine identifier precedence. |
|
*/ |
|
export interface WeightedIdentifierMangler extends SimpleIdentifierMangler { |
|
/** |
|
* Modifies the internal weighting of the input characters by the specified delta. |
|
* Will be invoked on the entire printed AST, and then deduct mangleable identifiers. |
|
* @param chars The characters to modify the weighting of. |
|
* @param delta The numeric weight to add to the characters. |
|
*/ |
|
consider(chars: string, delta: number): number; |
|
/** |
|
* Resets character weights. |
|
*/ |
|
reset(): void; |
|
/** |
|
* Sorts identifiers by character frequency, in preparation for calls to get(n). |
|
*/ |
|
sort(): void; |
|
} |
|
|
|
export interface ManglePropertiesOptions { |
|
builtins?: boolean; |
|
debug?: boolean; |
|
keep_quoted?: boolean | 'strict'; |
|
nth_identifier?: SimpleIdentifierMangler | WeightedIdentifierMangler; |
|
regex?: RegExp | string; |
|
reserved?: string[]; |
|
} |
|
|
|
export interface FormatOptions { |
|
ascii_only?: boolean; |
|
/** @deprecated Not implemented anymore */ |
|
beautify?: boolean; |
|
braces?: boolean; |
|
comments?: boolean | 'all' | 'some' | RegExp | ( (node: any, comment: { |
|
value: string, |
|
type: 'comment1' | 'comment2' | 'comment3' | 'comment4', |
|
pos: number, |
|
line: number, |
|
col: number, |
|
}) => boolean ); |
|
ecma?: ECMA; |
|
ie8?: boolean; |
|
keep_numbers?: boolean; |
|
indent_level?: number; |
|
indent_start?: number; |
|
inline_script?: boolean; |
|
keep_quoted_props?: boolean; |
|
max_line_len?: number | false; |
|
preamble?: string; |
|
preserve_annotations?: boolean; |
|
quote_keys?: boolean; |
|
quote_style?: OutputQuoteStyle; |
|
safari10?: boolean; |
|
semicolons?: boolean; |
|
shebang?: boolean; |
|
shorthand?: boolean; |
|
source_map?: SourceMapOptions; |
|
webkit?: boolean; |
|
width?: number; |
|
wrap_iife?: boolean; |
|
wrap_func_args?: boolean; |
|
} |
|
|
|
export enum OutputQuoteStyle { |
|
PreferDouble = 0, |
|
AlwaysSingle = 1, |
|
AlwaysDouble = 2, |
|
AlwaysOriginal = 3 |
|
} |
|
|
|
export interface MinifyOptions { |
|
compress?: boolean | CompressOptions; |
|
ecma?: ECMA; |
|
enclose?: boolean | string; |
|
ie8?: boolean; |
|
keep_classnames?: boolean | RegExp; |
|
keep_fnames?: boolean | RegExp; |
|
mangle?: boolean | MangleOptions; |
|
module?: boolean; |
|
nameCache?: object; |
|
format?: FormatOptions; |
|
/** @deprecated */ |
|
output?: FormatOptions; |
|
parse?: ParseOptions; |
|
safari10?: boolean; |
|
sourceMap?: boolean | SourceMapOptions; |
|
toplevel?: boolean; |
|
} |
|
|
|
export interface MinifyOutput { |
|
code?: string; |
|
map?: EncodedSourceMap | string; |
|
decoded_map?: DecodedSourceMap | null; |
|
} |
|
|
|
export interface SourceMapOptions { |
|
/** Source map object, 'inline' or source map file content */ |
|
content?: SectionedSourceMapInput | string; |
|
includeSources?: boolean; |
|
filename?: string; |
|
root?: string; |
|
url?: string | 'inline'; |
|
} |
|
|
|
export function minify(files: string | string[] | { [file: string]: string }, options?: MinifyOptions): Promise<MinifyOutput>;
|
|
|