repomix
Version:
A tool to pack repository contents to single file for AI consumption
32 lines (31 loc) • 1.35 kB
TypeScript
import type { Node, Query, Tree } from 'web-tree-sitter';
import type { RepomixConfigMerged } from '../../../config/configSchema.js';
export interface ParseContext {
fileContent: string;
lines: string[];
tree: Tree;
query: Query;
config: RepomixConfigMerged;
}
export interface ParseStrategy {
parseCapture(capture: {
node: Node;
name: string;
}, lines: string[], processedChunks: Set<string>, context: ParseContext): string | null;
}
export type ParseResult = {
content: string | null;
processedSignatures?: Set<string>;
};
export declare abstract class BaseParseStrategy implements ParseStrategy {
abstract parseCapture(capture: {
node: Node;
name: string;
}, lines: string[], processedChunks: Set<string>, context: ParseContext): string | null;
protected getCaptureTypes<T extends Record<string, string>>(name: string, captureTypes: T): Set<T[keyof T]>;
protected checkAndAddToProcessed(content: string, processedChunks: Set<string>): boolean;
protected validateLineExists(lines: string[], startRow: number): boolean;
protected extractLines(lines: string[], startRow: number, endRow: number): string[] | null;
protected createNullResult(): ParseResult;
protected createResult(content: string, processedSignatures?: Set<string>): ParseResult;
}