/** * Main Terraform configuration parser. * Parses .tf and .tf.json files into structured TerraformDocument objects. */ import { DirectoryParseOptions, DirectoryParseResult, TerraformDocument } from '../types/blocks'; /** * Main parser for Terraform configuration files. * Supports both HCL (.tf) and JSON (.tf.json) formats. * * @example * ```typescript * const parser = new TerraformParser(); * * // Parse a single file * const doc = parser.parseFile('main.tf'); * console.log(`Found ${doc.resource.length} resources`); * * // Parse a directory * const result = parser.parseDirectory('./terraform'); * console.log(`Parsed ${result.files.length} files`); * * // Access parsed elements * for (const resource of doc.resource) { * console.log(`${resource.type}.${resource.name}`); * } * ``` */ export declare class TerraformParser { private readonly scanner; private readonly variableParser; private readonly outputParser; private readonly localsParser; private readonly moduleParser; private readonly providerParser; private readonly resourceParser; private readonly dataParser; private readonly terraformSettingsParser; private readonly genericBlockParser; private readonly jsonParser; /** * Parses a Terraform configuration file. * Automatically detects format (.tf vs .tf.json) and uses appropriate parser. * * @param filePath - Path to the Terraform file * @returns Parsed TerraformDocument containing all blocks * @throws {Error} If file cannot be read or parsed * * @example * ```typescript * const doc = parser.parseFile('main.tf'); * console.log(doc.variable[0].name); * ``` */ parseFile(filePath: string): TerraformDocument; /** * Parses all Terraform files in a directory (recursively). * * @param dirPath - Path to the directory * @param options - Parsing options * @returns DirectoryParseResult with combined document and per-file results * @throws {Error} If directory does not exist or is not accessible * * @example * ```typescript * // Parse with defaults (aggregate + per-file results) * const result = parser.parseDirectory('./terraform'); * * // Parse without aggregation * const result = parser.parseDirectory('./terraform', { aggregate: false }); * * // Parse without per-file results * const result = parser.parseDirectory('./terraform', { includePerFile: false }); * ``` */ parseDirectory(dirPath: string, options?: DirectoryParseOptions): DirectoryParseResult; /** * Combines multiple TerraformDocuments into a single document. * Useful for aggregating configurations from multiple files. * * @param documents - Array of documents to combine * @returns A single TerraformDocument containing all blocks * * @example * ```typescript * const doc1 = parser.parseFile('main.tf'); * const doc2 = parser.parseFile('variables.tf'); * const combined = parser.combine([doc1, doc2]); * ``` */ combine(documents: TerraformDocument[]): TerraformDocument; }