repomix
Version:
A tool to pack repository contents to single file for AI consumption
126 lines (125 loc) • 10.5 kB
TypeScript
import type { RepomixConfigMerged } from '../config/configSchema.js';
import type { RepomixProgressCallback } from '../shared/types.js';
import { type SkippedFileInfo } from './file/fileCollect.js';
import type { FilesByRoot } from './file/fileTreeGenerate.js';
import type { ProcessedFile } from './file/fileTypes.js';
import type { SuspiciousFileResult } from './security/securityCheck.js';
import type { PackSkillParams } from './skill/packSkill.js';
export interface PackResult {
totalFiles: number;
totalCharacters: number;
totalTokens: number;
fileCharCounts: Record<string, number>;
fileTokenCounts: Record<string, number>;
gitDiffTokenCount: number;
gitLogTokenCount: number;
outputFiles?: string[];
suspiciousFilesResults: SuspiciousFileResult[];
suspiciousGitDiffResults: SuspiciousFileResult[];
suspiciousGitLogResults: SuspiciousFileResult[];
processedFiles: ProcessedFile[];
safeFilePaths: string[];
skippedFiles: SkippedFileInfo[];
}
declare const defaultDeps: {
searchFiles: (rootDir: string, config: RepomixConfigMerged, explicitFiles?: string[]) => Promise<import("./file/fileSearch.js").FileSearchResult>;
collectFiles: (filePaths: string[], rootDir: string, config: RepomixConfigMerged, progressCallback?: RepomixProgressCallback, deps?: {
readRawFile: (filePath: string, maxFileSize: number) => Promise<import("./file/fileRead.js").FileReadResult>;
}) => Promise<import("./file/fileCollect.js").FileCollectResults>;
processFiles: (rawFiles: import("./file/fileTypes.js").RawFile[], config: RepomixConfigMerged, progressCallback: RepomixProgressCallback, deps?: {
initTaskRunner: <T, R>(options: import("../shared/processConcurrency.js").WorkerOptions) => import("../shared/processConcurrency.js").TaskRunner<T, R>;
getFileManipulator: (filePath: string) => import("./file/fileManipulate.js").FileManipulator | null;
}) => Promise<ProcessedFile[]>;
validateFileSafety: (rawFiles: import("./file/fileTypes.js").RawFile[], progressCallback: RepomixProgressCallback, config: RepomixConfigMerged, gitDiffResult?: import("./git/gitDiffHandle.js").GitDiffResult, gitLogResult?: import("./git/gitLogHandle.js").GitLogResult, deps?: {
runSecurityCheck: (rawFiles: import("./file/fileTypes.js").RawFile[], progressCallback?: RepomixProgressCallback, gitDiffResult?: import("./git/gitDiffHandle.js").GitDiffResult, gitLogResult?: import("./git/gitLogHandle.js").GitLogResult, deps?: {
initTaskRunner: <T, R>(options: import("../shared/processConcurrency.js").WorkerOptions) => import("../shared/processConcurrency.js").TaskRunner<T, R>;
getProcessConcurrency: () => number;
}) => Promise<SuspiciousFileResult[]>;
filterOutUntrustedFiles: (rawFiles: import("./file/fileTypes.js").RawFile[], suspiciousFilesResults: SuspiciousFileResult[]) => import("./file/fileTypes.js").RawFile[];
}) => Promise<{
safeRawFiles: import("./file/fileTypes.js").RawFile[];
safeFilePaths: string[];
suspiciousFilesResults: SuspiciousFileResult[];
suspiciousGitDiffResults: SuspiciousFileResult[];
suspiciousGitLogResults: SuspiciousFileResult[];
}>;
produceOutput: (rootDirs: string[], config: RepomixConfigMerged, processedFiles: ProcessedFile[], allFilePaths: string[], gitDiffResult: import("./git/gitDiffHandle.js").GitDiffResult | undefined, gitLogResult: import("./git/gitLogHandle.js").GitLogResult | undefined, progressCallback: RepomixProgressCallback, filePathsByRoot?: FilesByRoot[], emptyDirPaths?: string[], overrideDeps?: Partial<{
generateOutput: (rootDirs: string[], config: RepomixConfigMerged, processedFiles: ProcessedFile[], allFilePaths: string[], gitDiffResult?: import("./git/gitDiffHandle.js").GitDiffResult | undefined, gitLogResult?: import("./git/gitLogHandle.js").GitLogResult | undefined, filePathsByRoot?: FilesByRoot[], emptyDirPaths?: string[], deps?: {
buildOutputGeneratorContext: (rootDirs: string[], config: RepomixConfigMerged, allFilePaths: string[], processedFiles: ProcessedFile[], gitDiffResult?: import("./git/gitDiffHandle.js").GitDiffResult | undefined, gitLogResult?: import("./git/gitLogHandle.js").GitLogResult | undefined, filePathsByRoot?: FilesByRoot[], emptyDirPaths?: string[], deps?: {
listDirectories: (rootDir: string, config: RepomixConfigMerged) => Promise<string[]>;
listFiles: (rootDir: string, config: RepomixConfigMerged) => Promise<string[]>;
searchFiles: (rootDir: string, config: RepomixConfigMerged, explicitFiles?: string[]) => Promise<import("./file/fileSearch.js").FileSearchResult>;
}) => Promise<import("./output/outputGeneratorTypes.js").OutputGeneratorContext>;
generateHandlebarOutput: (config: RepomixConfigMerged, renderContext: import("./output/outputGeneratorTypes.js").RenderContext, processedFiles?: ProcessedFile[]) => Promise<string>;
generateParsableXmlOutput: (renderContext: import("./output/outputGeneratorTypes.js").RenderContext) => Promise<string>;
generateParsableJsonOutput: (renderContext: import("./output/outputGeneratorTypes.js").RenderContext) => Promise<string>;
sortOutputFiles: (files: ProcessedFile[], config: RepomixConfigMerged, deps?: import("./output/outputSort.js").SortDeps) => Promise<ProcessedFile[]>;
}) => Promise<string>;
writeOutputToDisk: (output: string, config: RepomixConfigMerged) => Promise<undefined>;
copyToClipboardIfEnabled: (output: string, progressCallback: RepomixProgressCallback, config: RepomixConfigMerged) => Promise<void>;
}>) => Promise<import("./packager/produceOutput.js").ProduceOutputResult>;
calculateMetrics: (processedFiles: ProcessedFile[], outputPromise: Promise<string | string[]>, progressCallback: RepomixProgressCallback, config: RepomixConfigMerged, gitDiffResult: import("./git/gitDiffHandle.js").GitDiffResult | undefined, gitLogResult: import("./git/gitLogHandle.js").GitLogResult | undefined, overrideDeps?: Partial<{
calculateFileMetrics: (processedFiles: ProcessedFile[], targetFilePaths: string[], tokenCounterEncoding: import("./metrics/tokenEncodings.js").TokenEncoding, progressCallback: RepomixProgressCallback, deps: {
taskRunner: import("./metrics/metricsWorkerRunner.js").MetricsTaskRunner;
}) => Promise<import("./metrics/workers/types.js").FileMetrics[]>;
calculateOutputMetrics: (content: string, encoding: import("./metrics/tokenEncodings.js").TokenEncoding, path: string | undefined, deps: {
taskRunner: import("./metrics/metricsWorkerRunner.js").MetricsTaskRunner;
}) => Promise<number>;
calculateGitDiffMetrics: (config: RepomixConfigMerged, gitDiffResult: import("./git/gitDiffHandle.js").GitDiffResult | undefined, deps: {
taskRunner: import("./metrics/metricsWorkerRunner.js").MetricsTaskRunner;
}) => Promise<number>;
calculateGitLogMetrics: (config: RepomixConfigMerged, gitLogResult: import("./git/gitLogHandle.js").GitLogResult | undefined, deps: {
taskRunner: import("./metrics/metricsWorkerRunner.js").MetricsTaskRunner;
}) => Promise<{
gitLogTokenCount: number;
}>;
taskRunner: import("./metrics/metricsWorkerRunner.js").MetricsTaskRunner | undefined;
}>) => Promise<import("./metrics/calculateMetrics.js").CalculateMetricsResult>;
createMetricsTaskRunner: (numOfTasks: number, encoding: import("./metrics/tokenEncodings.js").TokenEncoding) => import("./metrics/calculateMetrics.js").MetricsTaskRunnerWithWarmup;
sortPaths: (filePaths: string[]) => string[];
sortOutputFiles: (files: ProcessedFile[], config: RepomixConfigMerged, deps?: import("./output/outputSort.js").SortDeps) => Promise<ProcessedFile[]>;
prefetchSortData: (config: RepomixConfigMerged, deps?: import("./output/outputSort.js").SortDeps) => Promise<void>;
getGitDiffs: (rootDirs: string[], config: RepomixConfigMerged, deps?: {
getWorkTreeDiff: (directory: string, deps?: {
execGitDiff: (directory: string, options?: string[], deps?: {
execFileAsync: typeof import("child_process").execFile.__promisify__;
}) => Promise<string>;
isGitRepository: (directory: string, deps?: {
execGitRevParse: (directory: string, deps?: {
execFileAsync: typeof import("child_process").execFile.__promisify__;
}) => Promise<string>;
}) => Promise<boolean>;
}) => Promise<string>;
getStagedDiff: (directory: string, deps?: {
execGitDiff: (directory: string, options?: string[], deps?: {
execFileAsync: typeof import("child_process").execFile.__promisify__;
}) => Promise<string>;
isGitRepository: (directory: string, deps?: {
execGitRevParse: (directory: string, deps?: {
execFileAsync: typeof import("child_process").execFile.__promisify__;
}) => Promise<string>;
}) => Promise<boolean>;
}) => Promise<string>;
}) => Promise<import("./git/gitDiffHandle.js").GitDiffResult | undefined>;
getGitLogs: (rootDirs: string[], config: RepomixConfigMerged, deps?: {
getGitLog: (directory: string, maxCommits: number, deps?: {
execGitLog: (directory: string, maxCommits: number, gitSeparator: string, deps?: {
execFileAsync: typeof import("child_process").execFile.__promisify__;
}) => Promise<string>;
isGitRepository: (directory: string, deps?: {
execGitRevParse: (directory: string, deps?: {
execFileAsync: typeof import("child_process").execFile.__promisify__;
}) => Promise<string>;
}) => Promise<boolean>;
}) => Promise<string>;
}) => Promise<import("./git/gitLogHandle.js").GitLogResult | undefined>;
packSkill: (params: PackSkillParams) => Promise<PackResult>;
};
export interface PackOptions {
skillName?: string;
skillDir?: string;
skillProjectName?: string;
skillSourceUrl?: string;
}
export declare const pack: (rootDirs: string[], config: RepomixConfigMerged, progressCallback?: RepomixProgressCallback, overrideDeps?: Partial<typeof defaultDeps>, explicitFiles?: string[], options?: PackOptions) => Promise<PackResult>;
export {};