UNPKG

@gohcltech/bitbucket-mcp

Version:

Bitbucket integration for Claude via Model Context Protocol

327 lines 12.3 kB
/** * @fileoverview Common types and schemas shared across all domain modules. * * This module contains: * - Error classes for different failure scenarios * - Pagination interfaces used by all API responses * - Configuration schemas for server and OAuth settings * - Utility functions for validation and sanitization * - Common validation patterns used across domains * */ import { z } from 'zod'; /** * Error thrown when input validation fails. * Contains detailed information about validation failures for debugging. */ export declare class ValidationError extends Error { details?: any | undefined; constructor(message: string, details?: any | undefined); } /** * Error thrown when authentication fails or tokens are invalid. * Indicates that the user needs to re-authenticate or refresh tokens. */ export declare class AuthenticationError extends Error { constructor(message: string); } /** * Error thrown when API rate limits are exceeded. * Includes retry-after information when available from the API. */ export declare class RateLimitError extends Error { retryAfter?: number | undefined; constructor(message: string, retryAfter?: number | undefined); } /** * Error thrown when Bitbucket API requests fail. * Contains HTTP status code and response data for debugging. */ export declare class BitbucketApiError extends Error { statusCode?: number | undefined; response?: any | undefined; constructor(message: string, statusCode?: number | undefined, response?: any | undefined); } /** * Generic interface for paginated Bitbucket API responses. * Used for endpoints that return lists of resources with pagination. * * @template T - The type of items in the response array */ export interface BitbucketApiResponse<T> { /** Array of items for the current page */ values: T[]; /** Current page number (optional) */ page?: number; /** Number of items per page (optional) */ pagelen?: number; /** Total number of items across all pages (optional) */ size?: number; /** URL for the next page of results (optional) */ next?: string; } /** * Schema for logging configuration parameters. * Defines options for multiple output destinations and logging behavior. */ export declare const LoggingConfigSchema: z.ZodObject<{ /** Enable real-time web log viewer */ enableLogViewer: z.ZodDefault<z.ZodBoolean>; /** Enable console logging output */ enableConsoleLogging: z.ZodDefault<z.ZodBoolean>; /** Enable file logging output */ enableFileLogging: z.ZodDefault<z.ZodBoolean>; /** Path for log file when file logging is enabled */ logFilePath: z.ZodDefault<z.ZodString>; /** Maximum number of log entries to keep in memory for web viewer */ logViewerMaxEntries: z.ZodDefault<z.ZodNumber>; /** Enable structured logging with additional metadata */ enableStructuredLogging: z.ZodDefault<z.ZodBoolean>; }, "strip", z.ZodTypeAny, { enableConsoleLogging: boolean; enableFileLogging: boolean; logFilePath: string; enableStructuredLogging: boolean; enableLogViewer: boolean; logViewerMaxEntries: number; }, { enableConsoleLogging?: boolean | undefined; enableFileLogging?: boolean | undefined; logFilePath?: string | undefined; enableStructuredLogging?: boolean | undefined; enableLogViewer?: boolean | undefined; logViewerMaxEntries?: number | undefined; }>; /** Inferred TypeScript type for logging configuration */ export type LoggingConfig = z.infer<typeof LoggingConfigSchema>; /** * Schema for server configuration parameters. * Defines valid ranges and defaults for server operation settings. */ export declare const ServerConfigSchema: z.ZodObject<{ /** Application version (loaded dynamically from package.json) */ version: z.ZodDefault<z.ZodString>; /** Server port number (1-65535) */ port: z.ZodDefault<z.ZodNumber>; /** Logging level for server operations */ logLevel: z.ZodDefault<z.ZodEnum<["error", "warn", "info", "debug"]>>; /** Logging configuration for multiple output destinations */ logging: z.ZodDefault<z.ZodObject<{ /** Enable real-time web log viewer */ enableLogViewer: z.ZodDefault<z.ZodBoolean>; /** Enable console logging output */ enableConsoleLogging: z.ZodDefault<z.ZodBoolean>; /** Enable file logging output */ enableFileLogging: z.ZodDefault<z.ZodBoolean>; /** Path for log file when file logging is enabled */ logFilePath: z.ZodDefault<z.ZodString>; /** Maximum number of log entries to keep in memory for web viewer */ logViewerMaxEntries: z.ZodDefault<z.ZodNumber>; /** Enable structured logging with additional metadata */ enableStructuredLogging: z.ZodDefault<z.ZodBoolean>; }, "strip", z.ZodTypeAny, { enableConsoleLogging: boolean; enableFileLogging: boolean; logFilePath: string; enableStructuredLogging: boolean; enableLogViewer: boolean; logViewerMaxEntries: number; }, { enableConsoleLogging?: boolean | undefined; enableFileLogging?: boolean | undefined; logFilePath?: string | undefined; enableStructuredLogging?: boolean | undefined; enableLogViewer?: boolean | undefined; logViewerMaxEntries?: number | undefined; }>>; /** Rate limiting configuration to respect API quotas using token bucket algorithm */ rateLimit: z.ZodDefault<z.ZodObject<{ /** Maximum concurrent requests to prevent overwhelming the API */ maxConcurrent: z.ZodDefault<z.ZodNumber>; /** Minimum time between requests in milliseconds to throttle request rate */ minTime: z.ZodDefault<z.ZodNumber>; /** Request reservoir size - initial number of tokens available for burst requests */ reservoir: z.ZodDefault<z.ZodNumber>; /** Amount to refill reservoir - tokens added during each refresh interval */ reservoirRefreshAmount: z.ZodDefault<z.ZodNumber>; /** Reservoir refresh interval in milliseconds - how often tokens are replenished */ reservoirRefreshInterval: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { maxConcurrent: number; minTime: number; reservoir: number; reservoirRefreshAmount: number; reservoirRefreshInterval: number; }, { maxConcurrent?: number | undefined; minTime?: number | undefined; reservoir?: number | undefined; reservoirRefreshAmount?: number | undefined; reservoirRefreshInterval?: number | undefined; }>>; /** Optional encrypted token storage configuration */ tokenStorage: z.ZodOptional<z.ZodObject<{ /** Encryption key (minimum 32 characters for security) */ encryptionKey: z.ZodString; /** File path for encrypted token storage */ filePath: z.ZodDefault<z.ZodString>; }, "strip", z.ZodTypeAny, { encryptionKey: string; filePath: string; }, { encryptionKey: string; filePath?: string | undefined; }>>; /** Pull request configuration options */ pullRequest: z.ZodDefault<z.ZodObject<{ /** Automatically close source branch when PR is merged (default: true) */ autoCloseBranchOnMerge: z.ZodDefault<z.ZodBoolean>; }, "strip", z.ZodTypeAny, { autoCloseBranchOnMerge: boolean; }, { autoCloseBranchOnMerge?: boolean | undefined; }>>; }, "strip", z.ZodTypeAny, { version: string; port: number; logLevel: "error" | "warn" | "info" | "debug"; logging: { enableConsoleLogging: boolean; enableFileLogging: boolean; logFilePath: string; enableStructuredLogging: boolean; enableLogViewer: boolean; logViewerMaxEntries: number; }; rateLimit: { maxConcurrent: number; minTime: number; reservoir: number; reservoirRefreshAmount: number; reservoirRefreshInterval: number; }; pullRequest: { autoCloseBranchOnMerge: boolean; }; tokenStorage?: { encryptionKey: string; filePath: string; } | undefined; }, { version?: string | undefined; port?: number | undefined; logLevel?: "error" | "warn" | "info" | "debug" | undefined; logging?: { enableConsoleLogging?: boolean | undefined; enableFileLogging?: boolean | undefined; logFilePath?: string | undefined; enableStructuredLogging?: boolean | undefined; enableLogViewer?: boolean | undefined; logViewerMaxEntries?: number | undefined; } | undefined; rateLimit?: { maxConcurrent?: number | undefined; minTime?: number | undefined; reservoir?: number | undefined; reservoirRefreshAmount?: number | undefined; reservoirRefreshInterval?: number | undefined; } | undefined; pullRequest?: { autoCloseBranchOnMerge?: boolean | undefined; } | undefined; tokenStorage?: { encryptionKey: string; filePath?: string | undefined; } | undefined; }>; /** Inferred TypeScript type for server configuration */ export type ServerConfig = z.infer<typeof ServerConfigSchema>; /** * Schema for OAuth token data persistence. * Defines the structure for storing authentication tokens securely. */ export declare const TokenDataSchema: z.ZodObject<{ /** OAuth 2.0 access token */ accessToken: z.ZodString; /** Optional refresh token for automatic renewal */ refreshToken: z.ZodOptional<z.ZodString>; /** Token expiration timestamp (milliseconds since epoch) */ expiresAt: z.ZodOptional<z.ZodNumber>; /** Token type (typically 'Bearer') */ tokenType: z.ZodDefault<z.ZodString>; }, "strip", z.ZodTypeAny, { accessToken: string; tokenType: string; refreshToken?: string | undefined; expiresAt?: number | undefined; }, { accessToken: string; refreshToken?: string | undefined; expiresAt?: number | undefined; tokenType?: string | undefined; }>; /** Inferred TypeScript type for token data */ export type TokenData = z.infer<typeof TokenDataSchema>; /** * Common regex patterns for validating Bitbucket identifiers. */ export declare const ValidationPatterns: { /** Workspace slug validation (alphanumeric, hyphens, underscores) */ readonly workspace: RegExp; /** Repository slug validation (alphanumeric, hyphens, underscores, dots) */ readonly repository: RegExp; /** Commit hash validation (40 character hexadecimal) */ readonly commitHash: RegExp; /** Branch name validation (general git branch naming rules) */ readonly branchName: RegExp; }; /** * Base schema for workspace-related operations. */ export declare const WorkspaceBaseSchema: z.ZodObject<{ workspace: z.ZodString; }, "strip", z.ZodTypeAny, { workspace: string; }, { workspace: string; }>; /** * Base schema for repository-related operations. */ export declare const RepositoryBaseSchema: z.ZodObject<{ workspace: z.ZodString; } & { repo_slug: z.ZodString; }, "strip", z.ZodTypeAny, { workspace: string; repo_slug: string; }, { workspace: string; repo_slug: string; }>; /** * Validates input against a Zod schema and throws detailed error on failure. * * @template T - The expected type after validation * @param schema - Zod schema to validate against * @param input - Input data to validate * @returns Validated and typed data * @throws {ValidationError} If validation fails with detailed error information */ export declare function validateInput<T>(schema: z.ZodSchema<T>, input: unknown): T; /** * Sanitizes string input to prevent injection attacks and limit length. * * @param input - String to sanitize * @returns Sanitized string safe for processing */ export declare function sanitizeString(input: string): string; /** * Type guard to check if input matches workspace input schema. */ export declare function isWorkspaceInput(input: unknown): input is z.infer<typeof WorkspaceBaseSchema>; /** * Type guard to check if input matches repository input schema. */ export declare function isRepositoryInput(input: unknown): input is z.infer<typeof RepositoryBaseSchema>; //# sourceMappingURL=common.d.ts.map