import { CompileError, ResourceNode } from '@intlify/message-compiler'; import { SourceMapGenerator } from 'source-map'; import type { RawSourceMap } from 'source-map'; /** * Compilation dev environments * * @public */ export type DevEnv = 'development' | 'production'; export interface Position { line: number; column: number; offset?: number; } export interface SourceLocationable { start?: number; loc?: { start: Position; end: Position; } | null; } /** * @internal */ export interface CodeGenOptions { type?: 'plain' | 'sfc' | 'bare'; legacy?: boolean; bridge?: boolean; exportESM?: boolean; source?: string; sourceMap?: boolean; filename?: string; inSourceMap?: RawSourceMap; isGlobal?: boolean; locale?: string; env?: DevEnv; forceStringify?: boolean; useClassComponent?: boolean; allowDynamic?: boolean; strictMessage?: boolean; escapeHtml?: boolean; onWarn?: (msg: string) => void; onError?: (msg: string, extra?: { source: string; path: string; code?: CompileError['code']; domain?: CompileError['domain']; location?: CompileError['location']; }) => void; } export interface CodeGenContext { source?: string; code: string; indentLevel: number; filename: string; line: number; column: number; offset: number; env: DevEnv; forceStringify: boolean; map?: SourceMapGenerator; } export interface CodeGenerator { context(): CodeGenContext; push(code: string, node?: Node, name?: string): void; indent(withNewLine?: boolean): void; deindent(withNewLine?: boolean): void; newline(): void; pushline(code: string, node?: Node, name?: string): void; } /** * @internal */ export interface CodeGenResult { code: string; ast: ASTNode; errors?: CodeGenError[]; map?: RawSourceMap; } export declare function createCodeGenerator(options?: CodeGenOptions): CodeGenerator; export declare function generateMessageFunction(msg: string, options: CodeGenOptions, path?: string[]): CodeGenResult; export declare function mapLinesColumns(resMap: RawSourceMap, codeMaps: Map, inSourceMap?: RawSourceMap): RawSourceMap | null;