/
types.js
117 lines (110 loc) · 2.51 KB
/
types.js
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import type { Axios } from 'axios'
import reasons from './reasons'
type Reason = $Keys<typeof reasons>
export type GithubNotification = {
id: string,
unread: boolean,
reason: Reason,
updated_at: string,
last_read_at: string,
subject: {
title: string,
url: string,
latest_comment_url: string,
type: string,
},
repository: {
id: number,
name: string,
full_name: string,
owner: {
login: string,
id: number,
avatar_url: string,
gravatar_id: string,
url: string,
html_url: string,
followers_url: string,
following_url: string,
gists_url: string,
starred_url: string,
subscriptions_url: string,
organizations_url: string,
repos_url: string,
events_url: string,
received_events_url: string,
type: string,
site_admin: boolean,
},
private: boolean,
html_url: string,
description: string,
fork: boolean,
url: string,
forks_url: string,
keys_url: string,
collaborators_url: string,
teams_url: string,
hooks_url: string,
issue_events_url: string,
events_url: string,
assignees_url: string,
branches_url: string,
tags_url: string,
blobs_url: string,
git_tags_url: string,
git_refs_url: string,
trees_url: string,
statuses_url: string,
languages_url: string,
stargazers_url: string,
contributors_url: string,
subscribers_url: string,
subscription_url: string,
commits_url: string,
git_commits_url: string,
comments_url: string,
issue_comment_url: string,
contents_url: string,
compare_url: string,
merges_url: string,
archive_url: string,
downloads_url: string,
issues_url: string,
pulls_url: string,
milestones_url: string,
notifications_url: string,
labels_url: string,
releases_url: string,
deployments_url: string,
},
url: string,
subscription_url: string,
}
export type GetNotificationsOptions = {
client: Axios,
url: string,
lastModified?: string,
params?: Object,
}
export type GetNotificationsResponse = {
notifications: GithubNotification[],
lastModified?: string,
updated: boolean,
pollIntervalMs: number,
}
export type PollNotificationsOptions = {
url?: string,
defaultInterval?: number,
params?: Object,
getNotifications?: (
g: GetNotificationsOptions
) => Promise<GetNotificationsResponse>,
}
export type ParsedNotification = {
reason: string,
title: string,
repo: string,
url: string,
htmlUrl: string,
}