import { Omit } from "ast-types/types"; /** * All Recast API functions take second parameter with configuration options, * documented in options.js */ export interface Options extends DeprecatedOptions { /** * If you want to use a different branch of esprima, or any other module * that supports a .parse function, pass that module object to * recast.parse as options.parser (legacy synonym: options.esprima). * @default require("recast/parsers/esprima") */ parser?: any; /** * Number of spaces the pretty-printer should use per tab for * indentation. If you do not pass this option explicitly, it will be * (quite reliably!) inferred from the original code. * @default 4 */ tabWidth?: number; /** * If you really want the pretty-printer to use tabs instead of spaces, * make this option true. * @default false */ useTabs?: boolean; /** * The reprinting code leaves leading whitespace untouched unless it has * to reindent a line, or you pass false for this option. * @default true */ reuseWhitespace?: boolean; /** * Override this option to use a different line terminator, e.g. \r\n. * @default require("os").EOL || "\n" */ lineTerminator?: string; /** * Some of the pretty-printer code (such as that for printing function * parameter lists) makes a valiant attempt to prevent really long * lines. You can adjust the limit by changing this option; however, * there is no guarantee that line length will fit inside this limit. * @default 74 */ wrapColumn?: number; /** * Pass a string as options.sourceFileName to recast.parse to tell the * reprinter to keep track of reused code so that it can construct a * source map automatically. * @default null */ sourceFileName?: string | null; /** * Pass a string as options.sourceMapName to recast.print, and (provided * you passed options.sourceFileName earlier) the PrintResult of * recast.print will have a .map property for the generated source map. * @default null */ sourceMapName?: string | null; /** * If provided, this option will be passed along to the source map * generator as a root directory for relative source file paths. * @default null */ sourceRoot?: string | null; /** * If you provide a source map that was generated from a previous call * to recast.print as options.inputSourceMap, the old source map will be * composed with the new source map. * @default null */ inputSourceMap?: string | null; /** * If you want esprima to generate .range information (recast only uses * .loc internally), pass true for this option. * @default false */ range?: boolean; /** * If you want esprima not to throw exceptions when it encounters * non-fatal errors, keep this option true. * @default true */ tolerant?: boolean; /** * If you want to override the quotes used in string literals, specify * either "single", "double", or "auto" here ("auto" will select the one * which results in the shorter literal) Otherwise, use double quotes. * @default null */ quote?: 'single' | 'double' | 'auto' | null; /** * Controls the printing of trailing commas in object literals, array * expressions and function parameters. * * This option could either be: * * Boolean - enable/disable in all contexts (objects, arrays and function params). * * Object - enable/disable per context. * * Example: * trailingComma: { * objects: true, * arrays: true, * parameters: false, * } * * @default false */ trailingComma?: boolean; /** * Controls the printing of spaces inside array brackets. * See: http://eslint.org/docs/rules/array-bracket-spacing * @default false */ arrayBracketSpacing?: boolean; /** * Controls the printing of spaces inside object literals, * destructuring assignments, and import/export specifiers. * See: http://eslint.org/docs/rules/object-curly-spacing * @default true */ objectCurlySpacing?: boolean; /** * If you want parenthesis to wrap single-argument arrow function * parameter lists, pass true for this option. * @default false */ arrowParensAlways?: boolean; /** * There are 2 supported syntaxes (`,` and `;`) in Flow Object Types; * The use of commas is in line with the more popular style and matches * how objects are defined in JS, making it a bit more natural to write. * @default true */ flowObjectCommas?: boolean; /** * Whether to return an array of .tokens on the root AST node. * @default true */ tokens?: boolean; } interface DeprecatedOptions { /** @deprecated */ esprima?: any; } export declare type NormalizedOptions = Required>; export declare function normalize(opts?: Options): NormalizedOptions; export {};