Module

x/astring/astring.d.ts

🌳 Tiny and fast JavaScript code generator from an ESTree-compliant AST.
Latest
File
import type { Node as EstreeNode } from 'estree'import type { Mapping, SourceMapGenerator } from 'source-map'import type { Writable } from 'stream'
/** * State object passed to generator functions. */export interface State { output: string write(code: string, node?: EstreeNode): void writeComments: boolean indent: string lineEnd: string indentLevel: number line?: number column?: number lineEndSize?: number mapping?: Mapping}
/** * Code generator for each node type. */export type Generator = { [T in EstreeNode['type']]: ( node: EstreeNode & { type: T }, state: State, ) => void}
/** * Code generator options. */export interface Options<Output = null> { /** * If present, source mappings will be written to the generator. */ sourceMap?: SourceMapGenerator /** * String to use for indentation, defaults to `"␣␣"`. */ indent?: string /** * String to use for line endings, defaults to `"\n"`. */ lineEnd?: string /** * Indent level to start from, defaults to `0`. */ startingIndentLevel?: number /** * Generate comments if `true`, defaults to `false`. */ comments?: boolean /** * Output stream to write the render code to, defaults to `null`. */ output?: Output /** * Custom code generator logic. */ generator?: Generator}
/** * Core Estree Node type to accommodate derived node types from parsers. */interface Node { type: string}
/** * Returns a string representing the rendered code of the provided AST `node`. * However, if an `output` stream is provided in the `options`, it writes to that stream and returns it. */export function generate(node: Node, options?: Options<null>): stringexport function generate(node: Node, options?: Options<Writable>): Writable
/** * Base code generator. */export const GENERATOR: Generator
/** * Base code generator. * * @deprecated Use {@link GENERATOR} instead. */export const baseGenerator: Generator