UNPKG

3.19 kBTypeScriptView Raw
1import { HandlerContext } from "../../HandlerContext";
2import { Project } from "../../project/Project";
3import { PullRequestReviewer } from "../common/RepoId";
4import { EditResult, ProjectEditor } from "./projectEditor";
5/**
6 * Used to determine EditMode on a per project basis,
7 * for example if we want to use a different branch name on different repos
8 */
9export declare type EditModeFactory = (p: Project) => EditMode;
10export declare function toEditModeFactory(em: EditMode | EditModeFactory): EditModeFactory;
11/**
12 * Root interface for information on how to apply an edit:
13 * E.g via a PR or commit to a branch (including master)
14 */
15export interface EditMode {
16 message: string;
17 /**
18 * Optional method to perform any additional actions on the project after
19 * applying the edit to persistent store--for example, setting a GitHub status
20 * @param {Project} p
21 * @param ctx HandlerContext for the current edit operation
22 * @return {Promise<any>}
23 */
24 afterPersist?(p: Project, ctx: HandlerContext): Promise<any>;
25}
26export declare function isEditMode(em: any): em is EditMode;
27/**
28 * Merge method to use when auto merging the branches
29 */
30export declare enum AutoMergeMethod {
31 Merge = "[auto-merge-method:merge]",
32 Rebase = "[auto-merge-method:rebase]",
33 Squash = "[auto-merge-method:squash]"
34}
35/**
36 * Trigger for branch auto merge
37 */
38export declare enum AutoMergeMode {
39 ApprovedReview = "[auto-merge:on-approve]",
40 SuccessfulCheck = "[auto-merge:on-check-success]"
41}
42/**
43 * Describe the auto merge behavior
44 */
45export interface AutoMerge {
46 mode: AutoMergeMode | string;
47 method?: AutoMergeMethod;
48}
49/**
50 * Represents a commit to a project on a branch
51 */
52export interface BranchCommit extends EditMode {
53 branch: string;
54 autoMerge?: AutoMerge;
55}
56/**
57 * Return a commit to master branch with the given message. Use with care!
58 */
59export declare function commitToMaster(message: string): BranchCommit;
60export declare function isBranchCommit(em: EditMode): em is BranchCommit;
61/**
62 * Captures basic information to create a commit
63 */
64export declare class Commit implements BranchCommit {
65 branch: string;
66 message: string;
67 autoMerge?: AutoMerge;
68 constructor(branch: string, message: string, autoMerge?: AutoMerge);
69}
70/**
71 * Captures extra steps that must go into raising a PR
72 */
73export declare class PullRequest extends Commit {
74 branch: string;
75 title: string;
76 body: string;
77 message: string;
78 targetBranch?: string;
79 autoMerge?: AutoMerge;
80 reviewers?: PullRequestReviewer[];
81 constructor(branch: string, title: string, body?: string, message?: string, targetBranch?: string, autoMerge?: AutoMerge, reviewers?: PullRequestReviewer[]);
82}
83export declare function isPullRequest(em: EditMode): em is PullRequest;
84/**
85 * Use for edit modes that require custom persistence
86 */
87export interface CustomExecutionEditMode extends EditMode {
88 edit<P>(p: Project, action: ProjectEditor<P>, context: HandlerContext, parameters: P): Promise<EditResult>;
89}
90export declare function isCustomExecutionEditMode(ei: EditMode): ei is CustomExecutionEditMode;
91//# sourceMappingURL=editModes.d.ts.map
\No newline at end of file