// Type definitions for @babel/generator 7.6
|
// Project: https://github.com/babel/babel/tree/master/packages/babel-generator, https://babeljs.io
|
// Definitions by: Troy Gerwien <https://github.com/yortus>
|
// Melvin Groenhoff <https://github.com/mgroenhoff>
|
// Cameron Yan <https://github.com/khell>
|
// Lyanbin <https://github.com/Lyanbin>
|
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
// TypeScript Version: 2.9
|
|
import * as t from '@babel/types';
|
|
export interface GeneratorOptions {
|
/**
|
* Optional string to add as a block comment at the start of the output file.
|
*/
|
auxiliaryCommentBefore?: string | undefined;
|
|
/**
|
* Optional string to add as a block comment at the end of the output file.
|
*/
|
auxiliaryCommentAfter?: string | undefined;
|
|
/**
|
* Function that takes a comment (as a string) and returns true if the comment should be included in the output.
|
* By default, comments are included if `opts.comments` is `true` or if `opts.minifed` is `false` and the comment
|
* contains `@preserve` or `@license`.
|
*/
|
shouldPrintComment?(comment: string): boolean;
|
|
/**
|
* Attempt to use the same line numbers in the output code as in the source code (helps preserve stack traces).
|
* Defaults to `false`.
|
*/
|
retainLines?: boolean | undefined;
|
|
/**
|
* Retain parens around function expressions (could be used to change engine parsing behavior)
|
* Defaults to `false`.
|
*/
|
retainFunctionParens?: boolean | undefined;
|
|
/**
|
* Should comments be included in output? Defaults to `true`.
|
*/
|
comments?: boolean | undefined;
|
|
/**
|
* Set to true to avoid adding whitespace for formatting. Defaults to the value of `opts.minified`.
|
*/
|
compact?: boolean | 'auto' | undefined;
|
|
/**
|
* Should the output be minified. Defaults to `false`.
|
*/
|
minified?: boolean | undefined;
|
|
/**
|
* Set to true to reduce whitespace (but not as much as opts.compact). Defaults to `false`.
|
*/
|
concise?: boolean | undefined;
|
|
/**
|
* Used in warning messages
|
*/
|
filename?: string | undefined;
|
|
/**
|
* Enable generating source maps. Defaults to `false`.
|
*/
|
sourceMaps?: boolean | undefined;
|
|
/**
|
* A root for all relative URLs in the source map.
|
*/
|
sourceRoot?: string | undefined;
|
|
/**
|
* The filename for the source code (i.e. the code in the `code` argument).
|
* This will only be used if `code` is a string.
|
*/
|
sourceFileName?: string | undefined;
|
|
/**
|
* Set to true to run jsesc with "json": true to print "\u00A9" vs. "©";
|
*/
|
jsonCompatibleStrings?: boolean | undefined;
|
|
/**
|
* Set to true to enable support for experimental decorators syntax before module exports.
|
* Defaults to `false`.
|
*/
|
decoratorsBeforeExport?: boolean | undefined;
|
|
/**
|
* Options for outputting jsesc representation.
|
*/
|
jsescOption?: {
|
/**
|
* The default value for the quotes option is 'single'. This means that any occurrences of ' in the input
|
* string are escaped as \', so that the output can be used in a string literal wrapped in single quotes.
|
*/
|
quotes?: 'single' | 'double' | 'backtick' | undefined;
|
|
/**
|
* The default value for the numbers option is 'decimal'. This means that any numeric values are represented
|
* using decimal integer literals. Other valid options are binary, octal, and hexadecimal, which result in
|
* binary integer literals, octal integer literals, and hexadecimal integer literals, respectively.
|
*/
|
numbers?: 'binary' | 'octal' | 'decimal' | 'hexadecimal' | undefined;
|
|
/**
|
* The wrap option takes a boolean value (true or false), and defaults to false (disabled). When enabled, the
|
* output is a valid JavaScript string literal wrapped in quotes. The type of quotes can be specified through
|
* the quotes setting.
|
*/
|
wrap?: boolean | undefined;
|
|
/**
|
* The es6 option takes a boolean value (true or false), and defaults to false (disabled). When enabled, any
|
* astral Unicode symbols in the input are escaped using ECMAScript 6 Unicode code point escape sequences
|
* instead of using separate escape sequences for each surrogate half. If backwards compatibility with ES5
|
* environments is a concern, don’t enable this setting. If the json setting is enabled, the value for the es6
|
* setting is ignored (as if it was false).
|
*/
|
es6?: boolean | undefined;
|
|
/**
|
* The escapeEverything option takes a boolean value (true or false), and defaults to false (disabled). When
|
* enabled, all the symbols in the output are escaped — even printable ASCII symbols.
|
*/
|
escapeEverything?: boolean | undefined;
|
|
/**
|
* The minimal option takes a boolean value (true or false), and defaults to false (disabled). When enabled,
|
* only a limited set of symbols in the output are escaped: \0, \b, \t, \n, \f, \r, \\, \u2028, \u2029.
|
*/
|
minimal?: boolean | undefined;
|
|
/**
|
* The isScriptContext option takes a boolean value (true or false), and defaults to false (disabled). When
|
* enabled, occurrences of </script and </style in the output are escaped as <\/script and <\/style, and <!--
|
* is escaped as \x3C!-- (or \u003C!-- when the json option is enabled). This setting is useful when jsesc’s
|
* output ends up as part of a <script> or <style> element in an HTML document.
|
*/
|
isScriptContext?: boolean | undefined;
|
|
/**
|
* The compact option takes a boolean value (true or false), and defaults to true (enabled). When enabled,
|
* the output for arrays and objects is as compact as possible; it’s not formatted nicely.
|
*/
|
compact?: boolean | undefined;
|
|
/**
|
* The indent option takes a string value, and defaults to '\t'. When the compact setting is enabled (true),
|
* the value of the indent option is used to format the output for arrays and objects.
|
*/
|
indent?: string | undefined;
|
|
/**
|
* The indentLevel option takes a numeric value, and defaults to 0. It represents the current indentation level,
|
* i.e. the number of times the value of the indent option is repeated.
|
*/
|
indentLevel?: number | undefined;
|
|
/**
|
* The json option takes a boolean value (true or false), and defaults to false (disabled). When enabled, the
|
* output is valid JSON. Hexadecimal character escape sequences and the \v or \0 escape sequences are not used.
|
* Setting json: true implies quotes: 'double', wrap: true, es6: false, although these values can still be
|
* overridden if needed — but in such cases, the output won’t be valid JSON anymore.
|
*/
|
json?: boolean | undefined;
|
|
/**
|
* The lowercaseHex option takes a boolean value (true or false), and defaults to false (disabled). When enabled,
|
* any alphabetical hexadecimal digits in escape sequences as well as any hexadecimal integer literals (see the
|
* numbers option) in the output are in lowercase.
|
*/
|
lowercaseHex?: boolean | undefined;
|
} | undefined;
|
}
|
|
export class CodeGenerator {
|
constructor(ast: t.Node, opts?: GeneratorOptions, code?: string);
|
generate(): GeneratorResult;
|
}
|
|
/**
|
* Turns an AST into code, maintaining sourcemaps, user preferences, and valid output.
|
* @param ast - the abstract syntax tree from which to generate output code.
|
* @param opts - used for specifying options for code generation.
|
* @param code - the original source code, used for source maps.
|
* @returns - an object containing the output code and source map.
|
*/
|
export default function generate(
|
ast: t.Node,
|
opts?: GeneratorOptions,
|
code?: string | { [filename: string]: string },
|
): GeneratorResult;
|
|
export interface GeneratorResult {
|
code: string;
|
map: {
|
version: number;
|
sources: string[];
|
names: string[];
|
sourceRoot?: string | undefined;
|
sourcesContent?: string[] | undefined;
|
mappings: string;
|
file: string;
|
} | null;
|
}
|