forked from microsoft/vscode-pull-request-github
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtimelineEvent.ts
More file actions
100 lines (86 loc) · 2.23 KB
/
timelineEvent.ts
File metadata and controls
100 lines (86 loc) · 2.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Comment } from './comment';
import { IAccount } from '../github/interface';
export enum EventType {
Committed,
Mentioned,
Subscribed,
Commented,
Reviewed,
Labeled,
Milestoned,
Assigned,
Merged,
Other
}
export interface Committer {
date: string;
name: string;
email: string;
}
export interface CommentEvent {
htmlUrl: string;
body: string;
bodyHTML?: string;
user: IAccount;
event: EventType;
canEdit?: boolean;
canDelete?: boolean;
id: number;
createdAt: string;
}
export interface ReviewEvent {
event: EventType;
comments: Comment[];
submittedAt: string;
body: string;
bodyHTML?: string;
htmlUrl: string;
user: IAccount;
authorAssociation: string;
state: 'COMMENTED' | 'APPROVED' | 'CHANGES_REQUESTED' | 'PENDING' | 'REQUESTED';
id: number;
}
export interface CommitEvent {
author: IAccount;
event: EventType;
sha: string;
url: string;
htmlUrl: string;
message: string;
bodyHTML?: string;
}
export interface MergedEvent {
graphNodeId: string;
user: IAccount;
createdAt: string;
mergeRef: string;
sha: string;
commitUrl: string;
event: EventType;
url: string;
}
export interface AssignEvent {
event: EventType;
user: IAccount;
actor: IAccount;
}
export type TimelineEvent = CommitEvent | ReviewEvent | CommentEvent | MergedEvent | AssignEvent;
export function isReviewEvent(event: TimelineEvent): event is ReviewEvent {
return event.event === EventType.Reviewed;
}
export function isCommitEvent(event: TimelineEvent): event is CommitEvent {
return event.event === EventType.Committed;
}
export function isCommentEvent(event: TimelineEvent): event is CommentEvent {
return event.event === EventType.Commented;
}
export function isMergedEvent(event: TimelineEvent): event is MergedEvent {
return event.event === EventType.Merged;
}
export function isAssignEvent(event: TimelineEvent): event is AssignEvent {
return event.event === EventType.Assigned;
}