
- Fixed API parameter passing for GET requests (was passing config as third parameter instead of fourth) - Branch filtering now works correctly with filterText parameter for Bitbucket Server - All GET requests with query parameters now functioning properly across all handlers - Updated CHANGELOG.md to reflect the fixes
189 lines
5.8 KiB
TypeScript
189 lines
5.8 KiB
TypeScript
// Type guards for tool arguments
|
|
export const isGetPullRequestArgs = (
|
|
args: any
|
|
): args is { workspace: string; repository: string; pull_request_id: number } =>
|
|
typeof args === 'object' &&
|
|
args !== null &&
|
|
typeof args.workspace === 'string' &&
|
|
typeof args.repository === 'string' &&
|
|
typeof args.pull_request_id === 'number';
|
|
|
|
export const isListPullRequestsArgs = (
|
|
args: any
|
|
): args is {
|
|
workspace: string;
|
|
repository: string;
|
|
state?: string;
|
|
author?: string;
|
|
limit?: number;
|
|
start?: number;
|
|
} =>
|
|
typeof args === 'object' &&
|
|
args !== null &&
|
|
typeof args.workspace === 'string' &&
|
|
typeof args.repository === 'string' &&
|
|
(args.state === undefined || typeof args.state === 'string') &&
|
|
(args.author === undefined || typeof args.author === 'string') &&
|
|
(args.limit === undefined || typeof args.limit === 'number') &&
|
|
(args.start === undefined || typeof args.start === 'number');
|
|
|
|
export const isCreatePullRequestArgs = (
|
|
args: any
|
|
): args is {
|
|
workspace: string;
|
|
repository: string;
|
|
title: string;
|
|
source_branch: string;
|
|
destination_branch: string;
|
|
description?: string;
|
|
reviewers?: string[];
|
|
close_source_branch?: boolean;
|
|
} =>
|
|
typeof args === 'object' &&
|
|
args !== null &&
|
|
typeof args.workspace === 'string' &&
|
|
typeof args.repository === 'string' &&
|
|
typeof args.title === 'string' &&
|
|
typeof args.source_branch === 'string' &&
|
|
typeof args.destination_branch === 'string' &&
|
|
(args.description === undefined || typeof args.description === 'string') &&
|
|
(args.reviewers === undefined || Array.isArray(args.reviewers)) &&
|
|
(args.close_source_branch === undefined || typeof args.close_source_branch === 'boolean');
|
|
|
|
export const isUpdatePullRequestArgs = (
|
|
args: any
|
|
): args is {
|
|
workspace: string;
|
|
repository: string;
|
|
pull_request_id: number;
|
|
title?: string;
|
|
description?: string;
|
|
destination_branch?: string;
|
|
reviewers?: string[];
|
|
} =>
|
|
typeof args === 'object' &&
|
|
args !== null &&
|
|
typeof args.workspace === 'string' &&
|
|
typeof args.repository === 'string' &&
|
|
typeof args.pull_request_id === 'number' &&
|
|
(args.title === undefined || typeof args.title === 'string') &&
|
|
(args.description === undefined || typeof args.description === 'string') &&
|
|
(args.destination_branch === undefined || typeof args.destination_branch === 'string') &&
|
|
(args.reviewers === undefined || Array.isArray(args.reviewers));
|
|
|
|
export const isAddCommentArgs = (
|
|
args: any
|
|
): args is {
|
|
workspace: string;
|
|
repository: string;
|
|
pull_request_id: number;
|
|
comment_text: string;
|
|
parent_comment_id?: number;
|
|
file_path?: string;
|
|
line_number?: number;
|
|
line_type?: 'ADDED' | 'REMOVED' | 'CONTEXT';
|
|
} =>
|
|
typeof args === 'object' &&
|
|
args !== null &&
|
|
typeof args.workspace === 'string' &&
|
|
typeof args.repository === 'string' &&
|
|
typeof args.pull_request_id === 'number' &&
|
|
typeof args.comment_text === 'string' &&
|
|
(args.parent_comment_id === undefined || typeof args.parent_comment_id === 'number') &&
|
|
(args.file_path === undefined || typeof args.file_path === 'string') &&
|
|
(args.line_number === undefined || typeof args.line_number === 'number') &&
|
|
(args.line_type === undefined || ['ADDED', 'REMOVED', 'CONTEXT'].includes(args.line_type));
|
|
|
|
export const isMergePullRequestArgs = (
|
|
args: any
|
|
): args is {
|
|
workspace: string;
|
|
repository: string;
|
|
pull_request_id: number;
|
|
merge_strategy?: string;
|
|
close_source_branch?: boolean;
|
|
commit_message?: string;
|
|
} =>
|
|
typeof args === 'object' &&
|
|
args !== null &&
|
|
typeof args.workspace === 'string' &&
|
|
typeof args.repository === 'string' &&
|
|
typeof args.pull_request_id === 'number' &&
|
|
(args.merge_strategy === undefined || typeof args.merge_strategy === 'string') &&
|
|
(args.close_source_branch === undefined || typeof args.close_source_branch === 'boolean') &&
|
|
(args.commit_message === undefined || typeof args.commit_message === 'string');
|
|
|
|
export const isDeleteBranchArgs = (
|
|
args: any
|
|
): args is {
|
|
workspace: string;
|
|
repository: string;
|
|
branch_name: string;
|
|
force?: boolean;
|
|
} =>
|
|
typeof args === 'object' &&
|
|
args !== null &&
|
|
typeof args.workspace === 'string' &&
|
|
typeof args.repository === 'string' &&
|
|
typeof args.branch_name === 'string' &&
|
|
(args.force === undefined || typeof args.force === 'boolean');
|
|
|
|
export const isListBranchesArgs = (
|
|
args: any
|
|
): args is {
|
|
workspace: string;
|
|
repository: string;
|
|
filter?: string;
|
|
limit?: number;
|
|
start?: number;
|
|
} =>
|
|
typeof args === 'object' &&
|
|
args !== null &&
|
|
typeof args.workspace === 'string' &&
|
|
typeof args.repository === 'string' &&
|
|
(args.filter === undefined || typeof args.filter === 'string') &&
|
|
(args.limit === undefined || typeof args.limit === 'number') &&
|
|
(args.start === undefined || typeof args.start === 'number');
|
|
|
|
export const isGetPullRequestDiffArgs = (
|
|
args: any
|
|
): args is {
|
|
workspace: string;
|
|
repository: string;
|
|
pull_request_id: number;
|
|
context_lines?: number;
|
|
} =>
|
|
typeof args === 'object' &&
|
|
args !== null &&
|
|
typeof args.workspace === 'string' &&
|
|
typeof args.repository === 'string' &&
|
|
typeof args.pull_request_id === 'number' &&
|
|
(args.context_lines === undefined || typeof args.context_lines === 'number');
|
|
|
|
export const isApprovePullRequestArgs = (
|
|
args: any
|
|
): args is {
|
|
workspace: string;
|
|
repository: string;
|
|
pull_request_id: number;
|
|
} =>
|
|
typeof args === 'object' &&
|
|
args !== null &&
|
|
typeof args.workspace === 'string' &&
|
|
typeof args.repository === 'string' &&
|
|
typeof args.pull_request_id === 'number';
|
|
|
|
export const isRequestChangesArgs = (
|
|
args: any
|
|
): args is {
|
|
workspace: string;
|
|
repository: string;
|
|
pull_request_id: number;
|
|
comment?: string;
|
|
} =>
|
|
typeof args === 'object' &&
|
|
args !== null &&
|
|
typeof args.workspace === 'string' &&
|
|
typeof args.repository === 'string' &&
|
|
typeof args.pull_request_id === 'number' &&
|
|
(args.comment === undefined || typeof args.comment === 'string');
|