UNPKG

@gohcltech/bitbucket-mcp

Version:

Bitbucket integration for Claude via Model Context Protocol

323 lines 15.6 kB
/** * @fileoverview Main Bitbucket client facade that composes all domain-specific clients. * * This module provides the primary interface for interacting with the Bitbucket API * through a facade pattern that delegates operations to specialized domain clients. * It maintains backward compatibility while providing a cleaner, more organized structure. * * Usage patterns: * - client.workspaces.list() * - client.repositories.create(workspace, name, config) * - client.branches.list(workspace, repo) * - client.pullRequests.create(workspace, repo, prData) * - client.commits.getDiff(workspace, repo, hash) * - client.issues.create(workspace, repo, issueData) * */ import { AuthService } from '../auth-service.js'; import { WorkspaceClient } from './workspace-client.js'; import { RepositoryClient } from './repository-client.js'; import { BranchClient } from './branch-client.js'; import { PullRequestClient } from './pull-request-client.js'; import { CommitClient } from './commit-client.js'; import { IssueClient } from './issue-client.js'; import { BitbucketApiResponse } from './base-client.js'; export type { BitbucketApiResponse } from './base-client.js'; export type { Workspace, Repository, Branch, PullRequest, Comment, Commit, CommitDiff, Issue, IssueComment, BranchingModel, BranchPermissions, DefaultReviewers, Component, Milestone, Version, } from '../types/index.js'; /** * Main Bitbucket API client facade. * * This class provides a unified interface to all Bitbucket API operations * through domain-specific client instances. Each domain client handles * its own specialized operations while sharing common infrastructure * from the BaseClient. * * The facade pattern allows for: * - Clean separation of concerns by domain * - Consistent error handling and logging * - Shared authentication and rate limiting * - Backward compatibility with existing code * - Easy testing and mocking of specific domains */ export declare class BitbucketClient { /** Domain-specific client instances */ readonly workspaces: WorkspaceClient; readonly repositories: RepositoryClient; readonly branches: BranchClient; readonly pullRequests: PullRequestClient; readonly commits: CommitClient; readonly issues: IssueClient; /** Logger instance for client-level operations */ private logger; /** * Creates a new Bitbucket API client facade. * * Initializes all domain-specific clients with the shared authentication service, * ensuring consistent authentication and configuration across all operations. * * @param authService - Authentication service for token management */ constructor(authService: AuthService); /** * @deprecated Use client.workspaces.getWorkspaces() instead */ getWorkspaces(): Promise<BitbucketApiResponse<import("../types/index.js").Workspace>>; /** * @deprecated Use client.workspaces.getAllWorkspaces() instead */ getAllWorkspaces(): Promise<import("../types/index.js").Workspace[]>; /** * @deprecated Use client.workspaces.getWorkspace() instead */ getWorkspace(workspaceSlug: string): Promise<import("../types/index.js").Workspace>; /** * @deprecated Use client.repositories.getRepositories() instead */ getRepositories(workspaceSlug: string): Promise<BitbucketApiResponse<import("../types/index.js").Repository>>; /** * @deprecated Use client.repositories.getAllRepositories() instead */ getAllRepositories(workspaceSlug: string): Promise<import("../types/index.js").Repository[]>; /** * @deprecated Use client.repositories.getRepository() instead */ getRepository(workspaceSlug: string, repoSlug: string): Promise<import("../types/index.js").Repository>; /** * @deprecated Use client.repositories.createRepository() instead */ createRepository(workspaceSlug: string, name: string, payload: any): Promise<import("../types/index.js").Repository>; /** * @deprecated Use client.repositories.updateRepository() instead */ updateRepository(workspaceSlug: string, repoSlug: string, payload: any): Promise<import("../types/index.js").Repository>; /** * @deprecated Use client.repositories.deleteRepository() instead */ deleteRepository(workspaceSlug: string, repoSlug: string): Promise<void>; /** * @deprecated Use client.branches.getBranches() instead */ getBranches(workspaceSlug: string, repoSlug: string): Promise<BitbucketApiResponse<import("../types/index.js").Branch>>; /** * @deprecated Use client.branches.getAllBranches() instead */ getAllBranches(workspaceSlug: string, repoSlug: string): Promise<import("../types/index.js").Branch[]>; /** * @deprecated Use client.branches.getBranch() instead */ getBranch(workspaceSlug: string, repoSlug: string, branchName: string): Promise<import("../types/index.js").Branch>; /** * @deprecated Use client.branches.createBranch() instead */ createBranch(workspaceSlug: string, repoSlug: string, payload: any): Promise<import("../types/index.js").Branch>; /** * @deprecated Use client.branches.deleteBranch() instead */ deleteBranch(workspaceSlug: string, repoSlug: string, branchName: string): Promise<void>; /** * @deprecated Use client.branches.getBranchingModel() instead */ getBranchingModel(workspaceSlug: string, repoSlug: string): Promise<import("../types/index.js").BranchingModel>; /** * @deprecated Use client.branches.getBranchPermissions() instead */ getBranchPermissions(workspaceSlug: string, repoSlug: string, params?: Record<string, string>): Promise<import("../types/index.js").BranchPermissions>; /** * @deprecated Use client.branches.getAllBranchPermissions() instead */ getAllBranchPermissions(workspaceSlug: string, repoSlug: string, params?: Record<string, string>): Promise<{ id: number; kind: "push" | "force" | "delete" | "restrict_merges" | "enforce_merge_checks"; pattern: string; users?: Array<{ display_name: string; uuid: string; }>; groups?: Array<{ name: string; slug: string; }>; value?: string | number | boolean; links?: { self: { href: string; }; }; }[]>; /** * @deprecated Use client.branches.getDefaultReviewers() instead */ getDefaultReviewers(workspaceSlug: string, repoSlug: string, params?: Record<string, string>): Promise<import("../types/index.js").DefaultReviewers>; /** * @deprecated Use client.branches.getAllDefaultReviewers() instead */ getAllDefaultReviewers(workspaceSlug: string, repoSlug: string, params?: Record<string, string>): Promise<{ user: { display_name: string; uuid: string; account_id: string; links: { avatar: { href: string; }; html: { href: string; }; }; }; pattern?: string; repository?: { name: string; full_name: string; uuid: string; }; }[]>; /** * @deprecated Use client.pullRequests.getPullRequests() instead */ getPullRequests(workspaceSlug: string, repoSlug: string, params?: Record<string, string>): Promise<BitbucketApiResponse<import("../types/index.js").PullRequest>>; /** * @deprecated Use client.pullRequests.getAllPullRequests() instead */ getAllPullRequests(workspaceSlug: string, repoSlug: string, params?: Record<string, string>): Promise<import("../types/index.js").PullRequest[]>; /** * @deprecated Use client.pullRequests.getPullRequest() instead */ getPullRequest(workspaceSlug: string, repoSlug: string, pullRequestId: number): Promise<import("../types/index.js").PullRequest>; /** * @deprecated Use client.pullRequests.createPullRequest() instead */ createPullRequest(workspaceSlug: string, repoSlug: string, payload: any): Promise<import("../types/index.js").PullRequest>; /** * @deprecated Use client.pullRequests.updatePullRequest() instead */ updatePullRequest(workspaceSlug: string, repoSlug: string, pullRequestId: number, payload: any): Promise<import("../types/index.js").PullRequest>; /** * @deprecated Use client.pullRequests.approvePullRequest() instead */ approvePullRequest(workspaceSlug: string, repoSlug: string, pullRequestId: number): Promise<void>; /** * @deprecated Use client.pullRequests.unapprovePullRequest() instead */ unapprovePullRequest(workspaceSlug: string, repoSlug: string, pullRequestId: number): Promise<void>; /** * @deprecated Use client.pullRequests.mergePullRequest() instead */ mergePullRequest(workspaceSlug: string, repoSlug: string, pullRequestId: number, payload?: any): Promise<import("../types/index.js").PullRequest>; /** * @deprecated Use client.pullRequests.declinePullRequest() instead */ declinePullRequest(workspaceSlug: string, repoSlug: string, pullRequestId: number): Promise<import("../types/index.js").PullRequest>; /** * @deprecated Use client.pullRequests.addComment() instead */ addComment(workspaceSlug: string, repoSlug: string, pullRequestId: number, payload: any): Promise<import("../types/index.js").Comment>; /** * @deprecated Use client.pullRequests.getComments() instead */ getComments(workspaceSlug: string, repoSlug: string, pullRequestId: number): Promise<BitbucketApiResponse<import("../types/index.js").Comment>>; /** * @deprecated Use client.pullRequests.getAllComments() instead */ getAllComments(workspaceSlug: string, repoSlug: string, pullRequestId: number): Promise<import("../types/index.js").Comment[]>; /** * @deprecated Use client.commits.getCommits() instead */ getCommits(workspaceSlug: string, repoSlug: string, params?: Record<string, string>): Promise<BitbucketApiResponse<import("../types/index.js").Commit>>; /** * @deprecated Use client.commits.getAllCommits() instead */ getAllCommits(workspaceSlug: string, repoSlug: string, params?: Record<string, string>): Promise<import("../types/index.js").Commit[]>; /** * @deprecated Use client.commits.getCommit() instead */ getCommit(workspaceSlug: string, repoSlug: string, commitHash: string): Promise<import("../types/index.js").Commit>; /** * @deprecated Use client.commits.getCommitDiff() instead */ getCommitDiff(workspaceSlug: string, repoSlug: string, commitHash: string, params?: Record<string, string>): Promise<import("../types/index.js").CommitDiff>; /** * @deprecated Use client.commits.getCommitPatch() instead */ getCommitPatch(workspaceSlug: string, repoSlug: string, commitHash: string): Promise<string>; /** * @deprecated Use client.issues.getIssues() instead */ getIssues(workspaceSlug: string, repoSlug: string, params?: Record<string, string | number>): Promise<BitbucketApiResponse<import("../types/index.js").Issue>>; /** * @deprecated Use client.issues.getAllIssues() instead */ getAllIssues(workspaceSlug: string, repoSlug: string, params?: Record<string, string | number>): Promise<import("../types/index.js").Issue[]>; /** * @deprecated Use client.issues.getIssue() instead */ getIssue(workspaceSlug: string, repoSlug: string, issueId: number): Promise<import("../types/index.js").Issue>; /** * @deprecated Use client.issues.createIssue() instead */ createIssue(workspaceSlug: string, repoSlug: string, payload: any): Promise<import("../types/index.js").Issue>; /** * @deprecated Use client.issues.updateIssue() instead */ updateIssue(workspaceSlug: string, repoSlug: string, issueId: number, payload: any): Promise<import("../types/index.js").Issue>; /** * @deprecated Use client.issues.deleteIssue() instead */ deleteIssue(workspaceSlug: string, repoSlug: string, issueId: number): Promise<void>; /** * @deprecated Use client.issues.getIssueComments() instead */ getIssueComments(workspaceSlug: string, repoSlug: string, issueId: number, params?: Record<string, string | number>): Promise<BitbucketApiResponse<import("../types/index.js").IssueComment>>; /** * @deprecated Use client.issues.addIssueComment() instead */ addIssueComment(workspaceSlug: string, repoSlug: string, issueId: number, content: string): Promise<import("../types/index.js").IssueComment>; /** * @deprecated Use client.issues.getComponents() instead */ getComponents(workspaceSlug: string, repoSlug: string): Promise<BitbucketApiResponse<import("../types/index.js").Component>>; /** * @deprecated Use client.issues.getMilestones() instead */ getMilestones(workspaceSlug: string, repoSlug: string, params?: Record<string, string>): Promise<BitbucketApiResponse<import("../types/index.js").Milestone>>; /** * @deprecated Use client.issues.getVersions() instead */ getVersions(workspaceSlug: string, repoSlug: string, params?: Record<string, string | boolean>): Promise<BitbucketApiResponse<import("../types/index.js").Version>>; /** * @deprecated Use client.issues.assignIssue() instead */ assignIssue(workspaceSlug: string, repoSlug: string, issueId: number, assignee: string): Promise<import("../types/index.js").Issue>; /** * @deprecated Use client.issues.voteIssue() instead */ voteIssue(workspaceSlug: string, repoSlug: string, issueId: number): Promise<void>; /** * @deprecated Use client.issues.watchIssue() instead */ watchIssue(workspaceSlug: string, repoSlug: string, issueId: number, watch?: boolean): Promise<void>; searchIssues(workspaceSlug: string, repoSlug: string, query: string, params?: Record<string, string | number>): Promise<void>; getIssueChanges(workspaceSlug: string, repoSlug: string, issueId: number): Promise<void>; getIssueWatchers(workspaceSlug: string, repoSlug: string, issueId: number): Promise<void>; getIssueComment(workspaceSlug: string, repoSlug: string, issueId: number, commentId: number): Promise<void>; updateIssueComment(workspaceSlug: string, repoSlug: string, issueId: number, commentId: number, content: string): Promise<void>; deleteIssueComment(workspaceSlug: string, repoSlug: string, issueId: number, commentId: number): Promise<void>; getComponent(workspaceSlug: string, repoSlug: string, componentId: number): Promise<void>; getMilestone(workspaceSlug: string, repoSlug: string, milestoneId: number): Promise<void>; getVersion(workspaceSlug: string, repoSlug: string, versionId: number): Promise<void>; /** * Performs a health check to verify API connectivity and authentication. * * This method tests both authentication status and basic API connectivity * by making a simple API call. Use this to verify the client is properly * configured and can communicate with Bitbucket. * * @returns Promise resolving to health status including authentication state */ healthCheck(): Promise<{ status: 'ok' | 'error'; isAuthenticated: boolean; timestamp: number; }>; } //# sourceMappingURL=bitbucket-client.d.ts.map