UNPKG

renovate

Version:

Automated dependency updates. Flexible so you don't need to be.

257 lines (256 loc) • 8.9 kB
import type { MergeStrategy } from '../../config/types'; import type { BranchStatus, HostRule, VulnerabilityAlert } from '../../types'; import type { CommitFilesConfig, LongCommitSha } from '../../util/git/types'; type VulnerabilityKey = string; type VulnerabilityRangeKey = string; type VulnerabilityPatch = string; export type AggregatedVulnerabilities = Record<VulnerabilityKey, Record<VulnerabilityRangeKey, VulnerabilityPatch | null>>; export interface PlatformParams { endpoint?: string; token?: string; username?: string; password?: string; gitAuthor?: string; } export interface PlatformResult { endpoint: string; renovateUsername?: string; token?: string; gitAuthor?: string; hostRules?: HostRule[]; } export interface RepoResult { defaultBranch: string; isFork: boolean; repoFingerprint: string; } export type GitUrlOption = 'default' | 'ssh' | 'endpoint'; export interface RepoParams { repository: string; endpoint?: string; gitUrl?: GitUrlOption; forkCreation?: boolean; forkOrg?: string; forkToken?: string; forkProcessing?: 'enabled' | 'disabled'; renovateUsername?: string; cloneSubmodules?: boolean; cloneSubmodulesFilter?: string[]; ignorePrAuthor?: boolean; bbUseDevelopmentBranch?: boolean; includeMirrors?: boolean; } export interface PrDebugData { createdInVer: string; updatedInVer: string; targetBranch: string; labels?: string[]; } export interface PrBodyStruct { hash: string; rawConfigHash?: string; rebaseRequested?: boolean; debugData?: PrDebugData; } /** * */ export interface Pr { bodyStruct?: PrBodyStruct; sourceBranch: string; cannotMergeReason?: string; createdAt?: string; closedAt?: string; hasAssignees?: boolean; labels?: string[]; number: number; reviewers?: string[]; sha?: LongCommitSha; sourceRepo?: string; state: string; targetBranch?: string; title: string; isDraft?: boolean; } /** * TODO: Proper typing */ export interface Issue { body?: string; number?: number; state?: string; title?: string; } export interface PlatformPrOptions { autoApprove?: boolean; automergeStrategy?: MergeStrategy; azureWorkItemId?: number; bbUseDefaultReviewers?: boolean; bbAutoResolvePrTasks?: boolean; gitLabIgnoreApprovals?: boolean; usePlatformAutomerge?: boolean; forkModeDisallowMaintainerEdits?: boolean; } export interface CreatePRConfig { sourceBranch: string; targetBranch: string; prTitle: string; prBody: string; labels?: string[] | null; platformPrOptions?: PlatformPrOptions; draftPR?: boolean; milestone?: number; } export interface UpdatePrConfig { number: number; platformPrOptions?: PlatformPrOptions; prTitle: string; prBody?: string; state?: 'open' | 'closed'; targetBranch?: string; /** * This field allows for label management and is designed to * accommodate the different label update methods on various platforms. * * - For Gitea, labels are updated by replacing the entire labels array. * - In the case of GitHub and GitLab, specific endpoints exist * for adding and removing labels. */ labels?: string[] | null; /** * Specifies an array of labels to be added. * @see {@link labels} */ addLabels?: string[] | null; /** * Specifies an array of labels to be removed. * @see {@link labels} */ removeLabels?: string[] | null; } export interface ReattemptPlatformAutomergeConfig { number: number; platformPrOptions?: PlatformPrOptions; } export interface EnsureIssueConfig { title: string; reuseTitle?: string; body: string; labels?: string[]; once?: boolean; shouldReOpen?: boolean; confidential?: boolean; } export interface BranchStatusConfig { branchName: string; context: string; description: string; state: BranchStatus; url?: string; } export interface FindPRConfig { branchName: string; prTitle?: string | null; state?: 'open' | 'closed' | '!open' | 'all'; refreshCache?: boolean; targetBranch?: string | null; includeOtherAuthors?: boolean; } export interface MergePRConfig { branchName?: string; id: number; strategy?: MergeStrategy; } export interface EnsureCommentConfig { number: number; topic: string | null; content: string; } export interface EnsureCommentRemovalConfigByTopic { type: 'by-topic'; number: number; topic: string; } export interface EnsureCommentRemovalConfigByContent { type: 'by-content'; number: number; content: string; } export type EnsureCommentRemovalConfig = EnsureCommentRemovalConfigByTopic | EnsureCommentRemovalConfigByContent; export type EnsureIssueResult = 'updated' | 'created'; export type RepoSortMethod = 'alpha' | 'created' | 'updated' | 'size' | 'id' | null; export type SortMethod = 'asc' | 'desc' | null; export interface AutodiscoverConfig { topics?: string[]; sort?: RepoSortMethod; order?: SortMethod; includeMirrors?: boolean; namespaces?: string[]; projects?: string[]; } export interface FileOwnerRule { usernames: string[]; pattern: string; score: number; match: (path: string) => boolean; } export interface Platform { findIssue(title: string): Promise<Issue | null>; getIssueList(): Promise<Issue[]>; getIssue?(number: number, memCache?: boolean): Promise<Issue | null>; getVulnerabilityAlerts?(): Promise<VulnerabilityAlert[]>; getRawFile(fileName: string, repoName?: string, branchOrTag?: string): Promise<string | null>; getJsonFile(fileName: string, repoName?: string, branchOrTag?: string): Promise<any>; initRepo(config: RepoParams): Promise<RepoResult>; getPrList(): Promise<Pr[]>; ensureIssueClosing(title: string): Promise<void>; ensureIssue(issueConfig: EnsureIssueConfig): Promise<EnsureIssueResult | null>; massageMarkdown(prBody: string, /** * Useful for suggesting the use of rebase label when there is no better * way, e.g. for Gerrit. */ rebaseLabel?: string): string; updatePr(prConfig: UpdatePrConfig): Promise<void>; mergePr(config: MergePRConfig): Promise<boolean>; addReviewers(number: number, reviewers: string[]): Promise<void>; addAssignees(number: number, assignees: string[]): Promise<void>; createPr(prConfig: CreatePRConfig): Promise<Pr | null>; getRepos(config?: AutodiscoverConfig): Promise<string[]>; getBranchForceRebase?(branchName: string): Promise<boolean>; deleteLabel(number: number, label: string): Promise<void>; addLabel?(number: number, label: string): Promise<void>; setBranchStatus(branchStatusConfig: BranchStatusConfig): Promise<void>; getBranchStatusCheck(branchName: string, context: string | null | undefined): Promise<BranchStatus | null>; ensureCommentRemoval(ensureCommentRemoval: EnsureCommentRemovalConfigByTopic | EnsureCommentRemovalConfigByContent): Promise<void>; ensureComment(ensureComment: EnsureCommentConfig): Promise<boolean>; getPr(number: number): Promise<Pr | null>; findPr(findPRConfig: FindPRConfig): Promise<Pr | null>; refreshPr?(number: number): Promise<void>; reattemptPlatformAutomerge?(prConfig: ReattemptPlatformAutomergeConfig): Promise<void>; getBranchStatus(branchName: string, internalChecksAsSuccess: boolean): Promise<BranchStatus>; getBranchPr(branchName: string, targetBranch?: string): Promise<Pr | null>; tryReuseAutoclosedPr?(pr: Pr): Promise<Pr | null>; initPlatform(config: PlatformParams): Promise<PlatformResult>; filterUnavailableUsers?(users: string[]): Promise<string[]>; commitFiles?(config: CommitFilesConfig): Promise<LongCommitSha | null>; expandGroupMembers?(reviewersOrAssignees: string[]): Promise<string[]>; extractRulesFromCodeOwnersLines?(cleanedLines: string[]): FileOwnerRule[]; maxBodyLength(): number; labelCharLimit?(): number; } export interface PlatformScm { isBranchBehindBase(branchName: string, baseBranch: string): Promise<boolean>; isBranchModified(branchName: string, baseBranch: string): Promise<boolean>; isBranchConflicted(baseBranch: string, branch: string): Promise<boolean>; branchExists(branchName: string): Promise<boolean>; getBranchCommit(branchName: string): Promise<LongCommitSha | null>; deleteBranch(branchName: string): Promise<void>; commitAndPush(commitConfig: CommitFilesConfig): Promise<LongCommitSha | null>; getFileList(): Promise<string[]>; checkoutBranch(branchName: string): Promise<LongCommitSha>; mergeToLocal(branchName: string): Promise<void>; mergeAndPush(branchName: string): Promise<void>; syncForkWithUpstream?(baseBranch: string): Promise<void>; } export {};