buddy-bot
Version:
Automated & optimized dependency updates for JavaScript & TypeScript projects. Like Renovate & Dependabot.
46 lines • 3.1 kB
TypeScript
import { DashboardGenerator } from './dashboard/dashboard-generator';
import { GitHubProvider } from './git/github-provider';
import { Logger } from './utils/logger';
import { PackageScanner } from './scanner/package-scanner';
import { RegistryClient } from './registry/registry-client';
import type { BuddyBotConfig, DashboardData, Issue, PackageFile, PackageUpdate, PullRequest, UpdateGroup, UpdateScanResult, } from './types';
export declare class Buddy {
readonly private logger: Logger;
readonly private scanner: PackageScanner;
readonly private registryClient: RegistryClient;
readonly private dashboardGenerator: DashboardGenerator;
private readonly config: BuddyBotConfig;
private readonly projectPath?: string;
constructor(config: BuddyBotConfig, projectPath?: string);
scanForUpdates(): Promise<UpdateScanResult>;
createPullRequests(scanResult: UpdateScanResult): Promise<void>;
private shouldRespectVersion(version: string): boolean;
private checkDependencyFilesForUpdates(packageFiles: PackageFile[]): Promise<PackageUpdate[]>;
private checkGitHubActionsForUpdates(packageFiles: PackageFile[]): Promise<PackageUpdate[]>;
private checkDockerfilesForUpdates(packageFiles: PackageFile[]): Promise<PackageUpdate[]>;
private getUpdateType(current: string, latest: string): 'major' | 'minor' | 'patch';
private isNewerVersion(current: string, latest: string): boolean;
generateAllFileUpdates(updates: PackageUpdate[]): Promise<Array<{ path: string, content: string, type: 'update' }>>;
run(): Promise<UpdateScanResult>;
checkPackages(packageNames: string[]): Promise<PackageUpdate[]>;
checkPackagesWithPattern(pattern: string): Promise<PackageUpdate[]>;
private filterUpdatesByStrategy(updates: PackageUpdate[], strategy: 'major' | 'minor' | 'patch' | 'all'): PackageUpdate[];
private groupUpdatesByConfig(updates: PackageUpdate[]): UpdateGroup[];
private getHighestUpdateType(updates: PackageUpdate[]): 'major' | 'minor' | 'patch';
private isSimilarPRTitle(existingTitle: string, newTitle: string): boolean;
private checkIfUpdatesMatch(existingPRBody: string, newUpdates: PackageUpdate[]): boolean;
private generatePRLabels(group: UpdateGroup): string[];
private shouldAutoClosePR(existingPR: PullRequest, _newUpdates: PackageUpdate[]): boolean;
private shouldAutoCloseForRespectLatest(existingPR: PullRequest): boolean;
private shouldAutoCloseForIgnorePaths(existingPR: PullRequest): boolean;
private shouldAutoCloseForRemovedFiles(existingPR: PullRequest): boolean;
private extractFilePathsFromPRBody(prBody: string): string[];
private extractPackagesFromPRBody(prBody: string): string[];
getConfig(): BuddyBotConfig;
getProjectPath(): string;
checkAndCloseObsoletePRs(gitProvider: GitHubProvider, dryRun?: boolean): Promise<void>;
private generateCloseReason(pr: PullRequest): string;
createOrUpdateDashboard(): Promise<Issue>;
private collectDashboardData(gitProvider: GitHubProvider): Promise<DashboardData>;
private findExistingDashboard(gitProvider: GitHubProvider, issueNumber?: number): Promise<Issue | null>;
}