digital-tools 2.1.3 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +19 -0
- package/README.md +2 -0
- package/dist/client.d.ts +109 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +69 -0
- package/dist/client.js.map +1 -0
- package/dist/define.d.ts +2 -2
- package/dist/define.d.ts.map +1 -1
- package/dist/define.js +21 -11
- package/dist/define.js.map +1 -1
- package/dist/function-ref.d.ts +229 -0
- package/dist/function-ref.d.ts.map +1 -0
- package/dist/function-ref.js +28 -0
- package/dist/function-ref.js.map +1 -0
- package/dist/function-sugar.d.ts +57 -0
- package/dist/function-sugar.d.ts.map +1 -0
- package/dist/function-sugar.js +79 -0
- package/dist/function-sugar.js.map +1 -0
- package/dist/index.d.ts +10 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -4
- package/dist/index.js.map +1 -1
- package/dist/providers/analytics/mixpanel.d.ts.map +1 -1
- package/dist/providers/analytics/mixpanel.js +21 -18
- package/dist/providers/analytics/mixpanel.js.map +1 -1
- package/dist/providers/calendar/cal-com.d.ts.map +1 -1
- package/dist/providers/calendar/cal-com.js +10 -10
- package/dist/providers/calendar/cal-com.js.map +1 -1
- package/dist/providers/calendar/google-calendar.d.ts.map +1 -1
- package/dist/providers/calendar/google-calendar.js +4 -4
- package/dist/providers/calendar/google-calendar.js.map +1 -1
- package/dist/providers/crm/hubspot.d.ts.map +1 -1
- package/dist/providers/crm/hubspot.js +107 -85
- package/dist/providers/crm/hubspot.js.map +1 -1
- package/dist/providers/development/github.d.ts.map +1 -1
- package/dist/providers/development/github.js +40 -43
- package/dist/providers/development/github.js.map +1 -1
- package/dist/providers/ecommerce/shopify.d.ts.map +1 -1
- package/dist/providers/ecommerce/shopify.js +79 -62
- package/dist/providers/ecommerce/shopify.js.map +1 -1
- package/dist/providers/email/resend.d.ts.map +1 -1
- package/dist/providers/email/resend.js +20 -16
- package/dist/providers/email/resend.js.map +1 -1
- package/dist/providers/email/sendgrid.d.ts.map +1 -1
- package/dist/providers/email/sendgrid.js +12 -9
- package/dist/providers/email/sendgrid.js.map +1 -1
- package/dist/providers/finance/stripe.d.ts.map +1 -1
- package/dist/providers/finance/stripe.js +44 -42
- package/dist/providers/finance/stripe.js.map +1 -1
- package/dist/providers/forms/typeform.d.ts.map +1 -1
- package/dist/providers/forms/typeform.js +68 -58
- package/dist/providers/forms/typeform.js.map +1 -1
- package/dist/providers/knowledge/notion.d.ts.map +1 -1
- package/dist/providers/knowledge/notion.js +75 -41
- package/dist/providers/knowledge/notion.js.map +1 -1
- package/dist/providers/marketing/mailchimp.d.ts.map +1 -1
- package/dist/providers/marketing/mailchimp.js +74 -61
- package/dist/providers/marketing/mailchimp.js.map +1 -1
- package/dist/providers/media/cloudinary.d.ts.map +1 -1
- package/dist/providers/media/cloudinary.js +30 -28
- package/dist/providers/media/cloudinary.js.map +1 -1
- package/dist/providers/messaging/slack.d.ts.map +1 -1
- package/dist/providers/messaging/slack.js +75 -58
- package/dist/providers/messaging/slack.js.map +1 -1
- package/dist/providers/messaging/twilio-sms.d.ts.map +1 -1
- package/dist/providers/messaging/twilio-sms.js +33 -15
- package/dist/providers/messaging/twilio-sms.js.map +1 -1
- package/dist/providers/project-management/linear.d.ts.map +1 -1
- package/dist/providers/project-management/linear.js +31 -27
- package/dist/providers/project-management/linear.js.map +1 -1
- package/dist/providers/spreadsheet/google-sheets.d.ts.map +1 -1
- package/dist/providers/spreadsheet/google-sheets.js +21 -18
- package/dist/providers/spreadsheet/google-sheets.js.map +1 -1
- package/dist/providers/spreadsheet/xlsx.d.ts.map +1 -1
- package/dist/providers/spreadsheet/xlsx.js +4 -4
- package/dist/providers/spreadsheet/xlsx.js.map +1 -1
- package/dist/providers/storage/index.js +1 -0
- package/dist/providers/storage/index.js.map +1 -1
- package/dist/providers/storage/s3.d.ts.map +1 -1
- package/dist/providers/storage/s3.js +36 -27
- package/dist/providers/storage/s3.js.map +1 -1
- package/dist/providers/support/zendesk.d.ts.map +1 -1
- package/dist/providers/support/zendesk.js +24 -25
- package/dist/providers/support/zendesk.js.map +1 -1
- package/dist/providers/tasks/todoist.d.ts.map +1 -1
- package/dist/providers/tasks/todoist.js +18 -18
- package/dist/providers/tasks/todoist.js.map +1 -1
- package/dist/providers/video-conferencing/google-meet.d.ts.map +1 -1
- package/dist/providers/video-conferencing/google-meet.js +11 -11
- package/dist/providers/video-conferencing/google-meet.js.map +1 -1
- package/dist/providers/video-conferencing/jitsi.js +14 -14
- package/dist/providers/video-conferencing/jitsi.js.map +1 -1
- package/dist/providers/video-conferencing/teams.d.ts.map +1 -1
- package/dist/providers/video-conferencing/teams.js +9 -7
- package/dist/providers/video-conferencing/teams.js.map +1 -1
- package/dist/providers/video-conferencing/zoom.d.ts.map +1 -1
- package/dist/providers/video-conferencing/zoom.js +26 -24
- package/dist/providers/video-conferencing/zoom.js.map +1 -1
- package/dist/tools/data.d.ts.map +1 -1
- package/dist/tools/data.js +5 -12
- package/dist/tools/data.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/system.d.ts +289 -0
- package/dist/tools/system.d.ts.map +1 -0
- package/dist/tools/system.js +752 -0
- package/dist/tools/system.js.map +1 -0
- package/dist/tools/web.d.ts.map +1 -1
- package/dist/tools/web.js +22 -10
- package/dist/tools/web.js.map +1 -1
- package/dist/track-record.d.ts +101 -0
- package/dist/track-record.d.ts.map +1 -0
- package/dist/track-record.js +17 -0
- package/dist/track-record.js.map +1 -0
- package/dist/types.d.ts +210 -9
- package/dist/types.d.ts.map +1 -1
- package/dist/verb-registration.d.ts +122 -0
- package/dist/verb-registration.d.ts.map +1 -0
- package/dist/verb-registration.js +176 -0
- package/dist/verb-registration.js.map +1 -0
- package/dist/worker.d.ts +93 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +315 -0
- package/dist/worker.js.map +1 -0
- package/dist/wrap.d.ts +89 -0
- package/dist/wrap.d.ts.map +1 -0
- package/dist/wrap.js +225 -0
- package/dist/wrap.js.map +1 -0
- package/package.json +31 -14
- package/src/client.ts +136 -0
- package/src/define.ts +30 -24
- package/src/function-ref.ts +264 -0
- package/src/function-sugar.ts +134 -0
- package/src/index.ts +132 -10
- package/src/providers/analytics/mixpanel.ts +19 -18
- package/src/providers/calendar/cal-com.ts +29 -18
- package/src/providers/calendar/google-calendar.ts +20 -14
- package/src/providers/crm/hubspot.ts +225 -99
- package/src/providers/development/github.ts +206 -135
- package/src/providers/ecommerce/shopify.ts +250 -89
- package/src/providers/email/resend.ts +101 -28
- package/src/providers/email/sendgrid.ts +12 -9
- package/src/providers/finance/stripe.ts +128 -49
- package/src/providers/forms/typeform.ts +74 -58
- package/src/providers/knowledge/notion.ts +340 -88
- package/src/providers/marketing/mailchimp.ts +86 -70
- package/src/providers/media/cloudinary.ts +99 -41
- package/src/providers/messaging/slack.ts +283 -85
- package/src/providers/messaging/twilio-sms.ts +35 -15
- package/src/providers/project-management/linear.ts +143 -55
- package/src/providers/spreadsheet/google-sheets.ts +222 -56
- package/src/providers/spreadsheet/xlsx.ts +47 -16
- package/src/providers/storage/s3.ts +119 -47
- package/src/providers/support/zendesk.ts +196 -46
- package/src/providers/tasks/todoist.ts +20 -26
- package/src/providers/video-conferencing/google-meet.ts +17 -20
- package/src/providers/video-conferencing/jitsi.ts +14 -14
- package/src/providers/video-conferencing/teams.ts +14 -13
- package/src/providers/video-conferencing/zoom.ts +54 -49
- package/src/tools/data.ts +6 -16
- package/src/tools/index.ts +1 -0
- package/src/tools/system.ts +887 -0
- package/src/tools/web.ts +22 -10
- package/src/track-record.ts +106 -0
- package/src/types.ts +241 -13
- package/src/verb-registration.ts +197 -0
- package/src/worker.ts +370 -0
- package/src/wrap.ts +260 -0
- package/test/client.test.ts +146 -0
- package/test/communication-tools-extended.test.ts +734 -0
- package/test/data-tools-extended.test.ts +743 -0
- package/test/define-extended.test.ts +819 -0
- package/test/define.test.ts +150 -41
- package/test/entities.test.ts +623 -0
- package/test/extended-entities.test.ts +1228 -0
- package/test/provider-implementations.test.ts +725 -0
- package/test/provider-registry-extended.test.ts +583 -0
- package/test/providers/google-sheets.test.ts +851 -0
- package/test/providers/helpers.ts +554 -0
- package/test/providers/hubspot.test.ts +576 -0
- package/test/providers/slack.test.ts +932 -0
- package/test/providers/stripe.test.ts +701 -0
- package/test/providers.test.ts +578 -0
- package/test/system-tools-extended.test.ts +632 -0
- package/test/system.test.ts +673 -0
- package/test/tools.test.ts +15 -11
- package/test/types.test.ts +402 -0
- package/test/verb-registration.test.ts +395 -0
- package/test/web-tools.test.ts +553 -0
- package/test/worker-extended.test.ts +699 -0
- package/test/worker.test.ts +576 -0
- package/test/wrap.test.ts +366 -0
- package/tsconfig.json +3 -13
- package/vitest.config.ts +37 -0
- package/wrangler.jsonc +9 -0
- package/LICENSE +0 -21
- package/dist/providers/voice/vapi.d.ts +0 -27
- package/dist/providers/voice/vapi.d.ts.map +0 -1
- package/dist/providers/voice/vapi.js +0 -440
- package/dist/providers/voice/vapi.js.map +0 -1
- package/src/define.js +0 -259
- package/src/entities/advertising.js +0 -999
- package/src/entities/ai.js +0 -756
- package/src/entities/analytics.js +0 -1588
- package/src/entities/automation.js +0 -601
- package/src/entities/communication.js +0 -1150
- package/src/entities/crm.js +0 -1386
- package/src/entities/design.js +0 -546
- package/src/entities/development.js +0 -2212
- package/src/entities/document.js +0 -874
- package/src/entities/ecommerce.js +0 -1429
- package/src/entities/experiment.js +0 -1039
- package/src/entities/finance.js +0 -3478
- package/src/entities/forms.js +0 -1892
- package/src/entities/hr.js +0 -661
- package/src/entities/identity.js +0 -997
- package/src/entities/index.js +0 -282
- package/src/entities/infrastructure.js +0 -1153
- package/src/entities/knowledge.js +0 -1438
- package/src/entities/marketing.js +0 -1610
- package/src/entities/media.js +0 -1634
- package/src/entities/notification.js +0 -1199
- package/src/entities/presentation.js +0 -1274
- package/src/entities/productivity.js +0 -1317
- package/src/entities/project-management.js +0 -1136
- package/src/entities/recruiting.js +0 -736
- package/src/entities/shipping.js +0 -509
- package/src/entities/signature.js +0 -1102
- package/src/entities/site.js +0 -222
- package/src/entities/spreadsheet.js +0 -1341
- package/src/entities/storage.js +0 -1198
- package/src/entities/support.js +0 -1166
- package/src/entities/video-conferencing.js +0 -1750
- package/src/entities/video.js +0 -950
- package/src/entities.js +0 -1663
- package/src/index.js +0 -74
- package/src/providers/analytics/index.js +0 -17
- package/src/providers/analytics/mixpanel.js +0 -255
- package/src/providers/calendar/cal-com.js +0 -303
- package/src/providers/calendar/google-calendar.js +0 -335
- package/src/providers/calendar/index.js +0 -20
- package/src/providers/crm/hubspot.js +0 -566
- package/src/providers/crm/index.js +0 -17
- package/src/providers/development/github.js +0 -472
- package/src/providers/development/index.js +0 -17
- package/src/providers/ecommerce/index.js +0 -17
- package/src/providers/ecommerce/shopify.js +0 -378
- package/src/providers/email/index.js +0 -20
- package/src/providers/email/resend.js +0 -258
- package/src/providers/email/sendgrid.js +0 -161
- package/src/providers/finance/index.js +0 -17
- package/src/providers/finance/stripe.js +0 -549
- package/src/providers/forms/index.js +0 -17
- package/src/providers/forms/typeform.js +0 -500
- package/src/providers/index.js +0 -123
- package/src/providers/knowledge/index.js +0 -17
- package/src/providers/knowledge/notion.js +0 -389
- package/src/providers/marketing/index.js +0 -17
- package/src/providers/marketing/mailchimp.js +0 -443
- package/src/providers/media/cloudinary.js +0 -318
- package/src/providers/media/index.js +0 -17
- package/src/providers/messaging/index.js +0 -20
- package/src/providers/messaging/slack.js +0 -393
- package/src/providers/messaging/twilio-sms.js +0 -249
- package/src/providers/project-management/index.js +0 -17
- package/src/providers/project-management/linear.js +0 -575
- package/src/providers/registry.js +0 -86
- package/src/providers/spreadsheet/google-sheets.js +0 -375
- package/src/providers/spreadsheet/index.js +0 -20
- package/src/providers/spreadsheet/xlsx.js +0 -423
- package/src/providers/storage/index.js +0 -24
- package/src/providers/storage/s3.js +0 -419
- package/src/providers/support/index.js +0 -17
- package/src/providers/support/zendesk.js +0 -373
- package/src/providers/tasks/index.js +0 -17
- package/src/providers/tasks/todoist.js +0 -286
- package/src/providers/types.js +0 -9
- package/src/providers/video-conferencing/google-meet.js +0 -286
- package/src/providers/video-conferencing/index.js +0 -31
- package/src/providers/video-conferencing/jitsi.js +0 -254
- package/src/providers/video-conferencing/teams.js +0 -270
- package/src/providers/video-conferencing/zoom.js +0 -332
- package/src/registry.js +0 -128
- package/src/tools/communication.js +0 -184
- package/src/tools/data.js +0 -205
- package/src/tools/index.js +0 -11
- package/src/tools/web.js +0 -137
- package/src/types.js +0 -10
- package/test/define.test.js +0 -306
- package/test/registry.test.js +0 -357
- package/test/tools.test.js +0 -363
|
@@ -26,6 +26,114 @@ import { defineProvider } from '../registry.js'
|
|
|
26
26
|
|
|
27
27
|
const GITHUB_API_URL = 'https://api.github.com'
|
|
28
28
|
|
|
29
|
+
// =============================================================================
|
|
30
|
+
// GitHub API Response Types
|
|
31
|
+
// =============================================================================
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* GitHub API user/owner object
|
|
35
|
+
*/
|
|
36
|
+
interface GitHubUser {
|
|
37
|
+
login: string
|
|
38
|
+
id: number
|
|
39
|
+
avatar_url: string
|
|
40
|
+
type: string
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* GitHub API repository response
|
|
45
|
+
*/
|
|
46
|
+
interface GitHubRepository {
|
|
47
|
+
id: number
|
|
48
|
+
name: string
|
|
49
|
+
full_name: string
|
|
50
|
+
description: string | null
|
|
51
|
+
private: boolean
|
|
52
|
+
default_branch: string
|
|
53
|
+
html_url: string
|
|
54
|
+
clone_url: string
|
|
55
|
+
stargazers_count: number
|
|
56
|
+
forks_count: number
|
|
57
|
+
open_issues_count: number
|
|
58
|
+
created_at: string
|
|
59
|
+
updated_at: string
|
|
60
|
+
owner: GitHubUser
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* GitHub API label object
|
|
65
|
+
*/
|
|
66
|
+
interface GitHubLabel {
|
|
67
|
+
id: number
|
|
68
|
+
name: string
|
|
69
|
+
color: string
|
|
70
|
+
description: string | null
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* GitHub API issue response
|
|
75
|
+
*/
|
|
76
|
+
interface GitHubIssue {
|
|
77
|
+
id: number
|
|
78
|
+
number: number
|
|
79
|
+
title: string
|
|
80
|
+
body: string | null
|
|
81
|
+
state: 'open' | 'closed'
|
|
82
|
+
html_url: string
|
|
83
|
+
created_at: string
|
|
84
|
+
updated_at: string
|
|
85
|
+
closed_at: string | null
|
|
86
|
+
user: GitHubUser
|
|
87
|
+
labels: GitHubLabel[]
|
|
88
|
+
assignees: GitHubUser[]
|
|
89
|
+
pull_request?: {
|
|
90
|
+
url: string
|
|
91
|
+
html_url: string
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* GitHub API branch reference
|
|
97
|
+
*/
|
|
98
|
+
interface GitHubBranchRef {
|
|
99
|
+
ref: string
|
|
100
|
+
sha: string
|
|
101
|
+
label: string
|
|
102
|
+
user: GitHubUser
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* GitHub API pull request response
|
|
107
|
+
*/
|
|
108
|
+
interface GitHubPullRequest {
|
|
109
|
+
id: number
|
|
110
|
+
number: number
|
|
111
|
+
title: string
|
|
112
|
+
body: string | null
|
|
113
|
+
state: 'open' | 'closed'
|
|
114
|
+
html_url: string
|
|
115
|
+
created_at: string
|
|
116
|
+
updated_at: string
|
|
117
|
+
closed_at: string | null
|
|
118
|
+
merged_at: string | null
|
|
119
|
+
draft: boolean
|
|
120
|
+
mergeable: boolean | null
|
|
121
|
+
user: GitHubUser
|
|
122
|
+
head: GitHubBranchRef
|
|
123
|
+
base: GitHubBranchRef
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* GitHub API comment response
|
|
128
|
+
*/
|
|
129
|
+
interface GitHubComment {
|
|
130
|
+
id: number
|
|
131
|
+
body: string
|
|
132
|
+
created_at: string
|
|
133
|
+
updated_at: string
|
|
134
|
+
user: GitHubUser
|
|
135
|
+
}
|
|
136
|
+
|
|
29
137
|
/**
|
|
30
138
|
* GitHub provider info
|
|
31
139
|
*/
|
|
@@ -105,27 +213,24 @@ export function createGitHubProvider(config: ProviderConfig): DevelopmentProvide
|
|
|
105
213
|
params.append('page', options.cursor)
|
|
106
214
|
}
|
|
107
215
|
|
|
108
|
-
const response = await fetch(
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
},
|
|
115
|
-
}
|
|
116
|
-
)
|
|
216
|
+
const response = await fetch(`${baseUrl}/user/repos?${params.toString()}`, {
|
|
217
|
+
headers: {
|
|
218
|
+
Authorization: `Bearer ${accessToken}`,
|
|
219
|
+
Accept: 'application/vnd.github.v3+json',
|
|
220
|
+
},
|
|
221
|
+
})
|
|
117
222
|
|
|
118
223
|
if (!response.ok) {
|
|
119
224
|
throw new Error(`GitHub API error: ${response.status} ${response.statusText}`)
|
|
120
225
|
}
|
|
121
226
|
|
|
122
|
-
const data = await response.json() as
|
|
123
|
-
const repos: RepoData[] = data.map((repo
|
|
227
|
+
const data = (await response.json()) as GitHubRepository[]
|
|
228
|
+
const repos: RepoData[] = data.map((repo) => ({
|
|
124
229
|
id: String(repo.id),
|
|
125
230
|
owner: repo.owner.login,
|
|
126
231
|
name: repo.name,
|
|
127
232
|
fullName: repo.full_name,
|
|
128
|
-
description: repo.description,
|
|
233
|
+
...(repo.description !== null && { description: repo.description }),
|
|
129
234
|
private: repo.private,
|
|
130
235
|
defaultBranch: repo.default_branch,
|
|
131
236
|
url: repo.html_url,
|
|
@@ -144,8 +249,7 @@ export function createGitHubProvider(config: ProviderConfig): DevelopmentProvide
|
|
|
144
249
|
return {
|
|
145
250
|
items: repos,
|
|
146
251
|
hasMore,
|
|
147
|
-
nextCursor,
|
|
148
|
-
total: undefined,
|
|
252
|
+
...(nextCursor !== undefined && { nextCursor }),
|
|
149
253
|
}
|
|
150
254
|
},
|
|
151
255
|
|
|
@@ -165,13 +269,13 @@ export function createGitHubProvider(config: ProviderConfig): DevelopmentProvide
|
|
|
165
269
|
throw new Error(`GitHub API error: ${response.status} ${response.statusText}`)
|
|
166
270
|
}
|
|
167
271
|
|
|
168
|
-
const data = await response.json() as
|
|
272
|
+
const data = (await response.json()) as GitHubRepository
|
|
169
273
|
return {
|
|
170
274
|
id: String(data.id),
|
|
171
275
|
owner: data.owner.login,
|
|
172
276
|
name: data.name,
|
|
173
277
|
fullName: data.full_name,
|
|
174
|
-
description: data.description,
|
|
278
|
+
...(data.description !== null && { description: data.description }),
|
|
175
279
|
private: data.private,
|
|
176
280
|
defaultBranch: data.default_branch,
|
|
177
281
|
url: data.html_url,
|
|
@@ -211,37 +315,30 @@ export function createGitHubProvider(config: ProviderConfig): DevelopmentProvide
|
|
|
211
315
|
throw new Error(`GitHub API error: ${response.status} ${response.statusText}`)
|
|
212
316
|
}
|
|
213
317
|
|
|
214
|
-
const data = await response.json() as
|
|
318
|
+
const data = (await response.json()) as GitHubIssue
|
|
215
319
|
return {
|
|
216
320
|
id: String(data.id),
|
|
217
321
|
number: data.number,
|
|
218
322
|
title: data.title,
|
|
219
|
-
body: data.body,
|
|
323
|
+
...(data.body !== null && { body: data.body }),
|
|
220
324
|
state: data.state,
|
|
221
|
-
labels: data.labels.map((l
|
|
222
|
-
assignees: data.assignees.map((a
|
|
325
|
+
labels: data.labels.map((l) => l.name),
|
|
326
|
+
assignees: data.assignees.map((a) => a.login),
|
|
223
327
|
authorId: data.user.login,
|
|
224
328
|
url: data.html_url,
|
|
225
329
|
createdAt: new Date(data.created_at),
|
|
226
330
|
updatedAt: new Date(data.updated_at),
|
|
227
|
-
|
|
331
|
+
...(data.closed_at !== null && { closedAt: new Date(data.closed_at) }),
|
|
228
332
|
}
|
|
229
333
|
},
|
|
230
334
|
|
|
231
|
-
async getIssue(
|
|
232
|
-
owner
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
{
|
|
239
|
-
headers: {
|
|
240
|
-
Authorization: `Bearer ${accessToken}`,
|
|
241
|
-
Accept: 'application/vnd.github.v3+json',
|
|
242
|
-
},
|
|
243
|
-
}
|
|
244
|
-
)
|
|
335
|
+
async getIssue(owner: string, repo: string, issueNumber: number): Promise<DevIssueData | null> {
|
|
336
|
+
const response = await fetch(`${baseUrl}/repos/${owner}/${repo}/issues/${issueNumber}`, {
|
|
337
|
+
headers: {
|
|
338
|
+
Authorization: `Bearer ${accessToken}`,
|
|
339
|
+
Accept: 'application/vnd.github.v3+json',
|
|
340
|
+
},
|
|
341
|
+
})
|
|
245
342
|
|
|
246
343
|
if (response.status === 404) {
|
|
247
344
|
return null
|
|
@@ -251,20 +348,20 @@ export function createGitHubProvider(config: ProviderConfig): DevelopmentProvide
|
|
|
251
348
|
throw new Error(`GitHub API error: ${response.status} ${response.statusText}`)
|
|
252
349
|
}
|
|
253
350
|
|
|
254
|
-
const data = await response.json() as
|
|
351
|
+
const data = (await response.json()) as GitHubIssue
|
|
255
352
|
return {
|
|
256
353
|
id: String(data.id),
|
|
257
354
|
number: data.number,
|
|
258
355
|
title: data.title,
|
|
259
|
-
body: data.body,
|
|
356
|
+
...(data.body !== null && { body: data.body }),
|
|
260
357
|
state: data.state,
|
|
261
|
-
labels: data.labels.map((l
|
|
262
|
-
assignees: data.assignees.map((a
|
|
358
|
+
labels: data.labels.map((l) => l.name),
|
|
359
|
+
assignees: data.assignees.map((a) => a.login),
|
|
263
360
|
authorId: data.user.login,
|
|
264
361
|
url: data.html_url,
|
|
265
362
|
createdAt: new Date(data.created_at),
|
|
266
363
|
updatedAt: new Date(data.updated_at),
|
|
267
|
-
|
|
364
|
+
...(data.closed_at !== null && { closedAt: new Date(data.closed_at) }),
|
|
268
365
|
}
|
|
269
366
|
},
|
|
270
367
|
|
|
@@ -276,43 +373,40 @@ export function createGitHubProvider(config: ProviderConfig): DevelopmentProvide
|
|
|
276
373
|
): Promise<DevIssueData> {
|
|
277
374
|
const body: Record<string, unknown> = {}
|
|
278
375
|
|
|
279
|
-
if (updates.title !== undefined) body
|
|
280
|
-
if (updates.body !== undefined) body
|
|
281
|
-
if (updates.labels !== undefined) body
|
|
282
|
-
if (updates.assignees !== undefined) body
|
|
283
|
-
if (updates.milestone !== undefined) body
|
|
376
|
+
if (updates.title !== undefined) body['title'] = updates.title
|
|
377
|
+
if (updates.body !== undefined) body['body'] = updates.body
|
|
378
|
+
if (updates.labels !== undefined) body['labels'] = updates.labels
|
|
379
|
+
if (updates.assignees !== undefined) body['assignees'] = updates.assignees
|
|
380
|
+
if (updates.milestone !== undefined) body['milestone'] = updates.milestone
|
|
284
381
|
|
|
285
|
-
const response = await fetch(
|
|
286
|
-
|
|
287
|
-
{
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
body: JSON.stringify(body),
|
|
295
|
-
}
|
|
296
|
-
)
|
|
382
|
+
const response = await fetch(`${baseUrl}/repos/${owner}/${repo}/issues/${issueNumber}`, {
|
|
383
|
+
method: 'PATCH',
|
|
384
|
+
headers: {
|
|
385
|
+
Authorization: `Bearer ${accessToken}`,
|
|
386
|
+
Accept: 'application/vnd.github.v3+json',
|
|
387
|
+
'Content-Type': 'application/json',
|
|
388
|
+
},
|
|
389
|
+
body: JSON.stringify(body),
|
|
390
|
+
})
|
|
297
391
|
|
|
298
392
|
if (!response.ok) {
|
|
299
393
|
throw new Error(`GitHub API error: ${response.status} ${response.statusText}`)
|
|
300
394
|
}
|
|
301
395
|
|
|
302
|
-
const data = await response.json() as
|
|
396
|
+
const data = (await response.json()) as GitHubIssue
|
|
303
397
|
return {
|
|
304
398
|
id: String(data.id),
|
|
305
399
|
number: data.number,
|
|
306
400
|
title: data.title,
|
|
307
|
-
body: data.body,
|
|
401
|
+
...(data.body !== null && { body: data.body }),
|
|
308
402
|
state: data.state,
|
|
309
|
-
labels: data.labels.map((l
|
|
310
|
-
assignees: data.assignees.map((a
|
|
403
|
+
labels: data.labels.map((l) => l.name),
|
|
404
|
+
assignees: data.assignees.map((a) => a.login),
|
|
311
405
|
authorId: data.user.login,
|
|
312
406
|
url: data.html_url,
|
|
313
407
|
createdAt: new Date(data.created_at),
|
|
314
408
|
updatedAt: new Date(data.updated_at),
|
|
315
|
-
|
|
409
|
+
...(data.closed_at !== null && { closedAt: new Date(data.closed_at) }),
|
|
316
410
|
}
|
|
317
411
|
},
|
|
318
412
|
|
|
@@ -356,22 +450,22 @@ export function createGitHubProvider(config: ProviderConfig): DevelopmentProvide
|
|
|
356
450
|
throw new Error(`GitHub API error: ${response.status} ${response.statusText}`)
|
|
357
451
|
}
|
|
358
452
|
|
|
359
|
-
const data = await response.json() as
|
|
453
|
+
const data = (await response.json()) as GitHubIssue[]
|
|
360
454
|
const issues: DevIssueData[] = data
|
|
361
|
-
.filter((item
|
|
362
|
-
.map((issue
|
|
455
|
+
.filter((item) => !item.pull_request) // Filter out PRs
|
|
456
|
+
.map((issue) => ({
|
|
363
457
|
id: String(issue.id),
|
|
364
458
|
number: issue.number,
|
|
365
459
|
title: issue.title,
|
|
366
|
-
body: issue.body,
|
|
460
|
+
...(issue.body !== null && { body: issue.body }),
|
|
367
461
|
state: issue.state,
|
|
368
|
-
labels: issue.labels.map((l
|
|
369
|
-
assignees: issue.assignees.map((a
|
|
462
|
+
labels: issue.labels.map((l) => l.name),
|
|
463
|
+
assignees: issue.assignees.map((a) => a.login),
|
|
370
464
|
authorId: issue.user.login,
|
|
371
465
|
url: issue.html_url,
|
|
372
466
|
createdAt: new Date(issue.created_at),
|
|
373
467
|
updatedAt: new Date(issue.updated_at),
|
|
374
|
-
|
|
468
|
+
...(issue.closed_at !== null && { closedAt: new Date(issue.closed_at) }),
|
|
375
469
|
}))
|
|
376
470
|
|
|
377
471
|
const linkHeader = response.headers.get('Link')
|
|
@@ -381,16 +475,11 @@ export function createGitHubProvider(config: ProviderConfig): DevelopmentProvide
|
|
|
381
475
|
return {
|
|
382
476
|
items: issues,
|
|
383
477
|
hasMore,
|
|
384
|
-
nextCursor,
|
|
385
|
-
total: undefined,
|
|
478
|
+
...(nextCursor !== undefined && { nextCursor }),
|
|
386
479
|
}
|
|
387
480
|
},
|
|
388
481
|
|
|
389
|
-
async createPullRequest(
|
|
390
|
-
owner: string,
|
|
391
|
-
repo: string,
|
|
392
|
-
pr: CreatePROptions
|
|
393
|
-
): Promise<PRData> {
|
|
482
|
+
async createPullRequest(owner: string, repo: string, pr: CreatePROptions): Promise<PRData> {
|
|
394
483
|
const body = {
|
|
395
484
|
title: pr.title,
|
|
396
485
|
body: pr.body,
|
|
@@ -413,40 +502,33 @@ export function createGitHubProvider(config: ProviderConfig): DevelopmentProvide
|
|
|
413
502
|
throw new Error(`GitHub API error: ${response.status} ${response.statusText}`)
|
|
414
503
|
}
|
|
415
504
|
|
|
416
|
-
const data = await response.json() as
|
|
505
|
+
const data = (await response.json()) as GitHubPullRequest
|
|
417
506
|
return {
|
|
418
507
|
id: String(data.id),
|
|
419
508
|
number: data.number,
|
|
420
509
|
title: data.title,
|
|
421
|
-
body: data.body,
|
|
510
|
+
...(data.body !== null && { body: data.body }),
|
|
422
511
|
state: data.merged_at ? 'merged' : data.state,
|
|
423
512
|
head: data.head.ref,
|
|
424
513
|
base: data.base.ref,
|
|
425
514
|
authorId: data.user.login,
|
|
426
515
|
draft: data.draft,
|
|
427
|
-
mergeable: data.mergeable,
|
|
516
|
+
...(data.mergeable !== null && { mergeable: data.mergeable }),
|
|
428
517
|
url: data.html_url,
|
|
429
518
|
createdAt: new Date(data.created_at),
|
|
430
519
|
updatedAt: new Date(data.updated_at),
|
|
431
|
-
|
|
432
|
-
|
|
520
|
+
...(data.merged_at !== null && { mergedAt: new Date(data.merged_at) }),
|
|
521
|
+
...(data.closed_at !== null && { closedAt: new Date(data.closed_at) }),
|
|
433
522
|
}
|
|
434
523
|
},
|
|
435
524
|
|
|
436
|
-
async getPullRequest(
|
|
437
|
-
owner
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
{
|
|
444
|
-
headers: {
|
|
445
|
-
Authorization: `Bearer ${accessToken}`,
|
|
446
|
-
Accept: 'application/vnd.github.v3+json',
|
|
447
|
-
},
|
|
448
|
-
}
|
|
449
|
-
)
|
|
525
|
+
async getPullRequest(owner: string, repo: string, prNumber: number): Promise<PRData | null> {
|
|
526
|
+
const response = await fetch(`${baseUrl}/repos/${owner}/${repo}/pulls/${prNumber}`, {
|
|
527
|
+
headers: {
|
|
528
|
+
Authorization: `Bearer ${accessToken}`,
|
|
529
|
+
Accept: 'application/vnd.github.v3+json',
|
|
530
|
+
},
|
|
531
|
+
})
|
|
450
532
|
|
|
451
533
|
if (response.status === 404) {
|
|
452
534
|
return null
|
|
@@ -456,23 +538,23 @@ export function createGitHubProvider(config: ProviderConfig): DevelopmentProvide
|
|
|
456
538
|
throw new Error(`GitHub API error: ${response.status} ${response.statusText}`)
|
|
457
539
|
}
|
|
458
540
|
|
|
459
|
-
const data = await response.json() as
|
|
541
|
+
const data = (await response.json()) as GitHubPullRequest
|
|
460
542
|
return {
|
|
461
543
|
id: String(data.id),
|
|
462
544
|
number: data.number,
|
|
463
545
|
title: data.title,
|
|
464
|
-
body: data.body,
|
|
546
|
+
...(data.body !== null && { body: data.body }),
|
|
465
547
|
state: data.merged_at ? 'merged' : data.state,
|
|
466
548
|
head: data.head.ref,
|
|
467
549
|
base: data.base.ref,
|
|
468
550
|
authorId: data.user.login,
|
|
469
551
|
draft: data.draft,
|
|
470
|
-
mergeable: data.mergeable,
|
|
552
|
+
...(data.mergeable !== null && { mergeable: data.mergeable }),
|
|
471
553
|
url: data.html_url,
|
|
472
554
|
createdAt: new Date(data.created_at),
|
|
473
555
|
updatedAt: new Date(data.updated_at),
|
|
474
|
-
|
|
475
|
-
|
|
556
|
+
...(data.merged_at !== null && { mergedAt: new Date(data.merged_at) }),
|
|
557
|
+
...(data.closed_at !== null && { closedAt: new Date(data.closed_at) }),
|
|
476
558
|
}
|
|
477
559
|
},
|
|
478
560
|
|
|
@@ -499,37 +581,34 @@ export function createGitHubProvider(config: ProviderConfig): DevelopmentProvide
|
|
|
499
581
|
params.append('page', options.cursor)
|
|
500
582
|
}
|
|
501
583
|
|
|
502
|
-
const response = await fetch(
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
},
|
|
509
|
-
}
|
|
510
|
-
)
|
|
584
|
+
const response = await fetch(`${baseUrl}/repos/${owner}/${repo}/pulls?${params.toString()}`, {
|
|
585
|
+
headers: {
|
|
586
|
+
Authorization: `Bearer ${accessToken}`,
|
|
587
|
+
Accept: 'application/vnd.github.v3+json',
|
|
588
|
+
},
|
|
589
|
+
})
|
|
511
590
|
|
|
512
591
|
if (!response.ok) {
|
|
513
592
|
throw new Error(`GitHub API error: ${response.status} ${response.statusText}`)
|
|
514
593
|
}
|
|
515
594
|
|
|
516
|
-
const data = await response.json() as
|
|
517
|
-
const prs: PRData[] = data.map((pr
|
|
595
|
+
const data = (await response.json()) as GitHubPullRequest[]
|
|
596
|
+
const prs: PRData[] = data.map((pr) => ({
|
|
518
597
|
id: String(pr.id),
|
|
519
598
|
number: pr.number,
|
|
520
599
|
title: pr.title,
|
|
521
|
-
body: pr.body,
|
|
600
|
+
...(pr.body !== null && { body: pr.body }),
|
|
522
601
|
state: pr.merged_at ? 'merged' : pr.state,
|
|
523
602
|
head: pr.head.ref,
|
|
524
603
|
base: pr.base.ref,
|
|
525
604
|
authorId: pr.user.login,
|
|
526
605
|
draft: pr.draft,
|
|
527
|
-
mergeable: pr.mergeable,
|
|
606
|
+
...(pr.mergeable !== null && { mergeable: pr.mergeable }),
|
|
528
607
|
url: pr.html_url,
|
|
529
608
|
createdAt: new Date(pr.created_at),
|
|
530
609
|
updatedAt: new Date(pr.updated_at),
|
|
531
|
-
|
|
532
|
-
|
|
610
|
+
...(pr.merged_at !== null && { mergedAt: new Date(pr.merged_at) }),
|
|
611
|
+
...(pr.closed_at !== null && { closedAt: new Date(pr.closed_at) }),
|
|
533
612
|
}))
|
|
534
613
|
|
|
535
614
|
const linkHeader = response.headers.get('Link')
|
|
@@ -539,28 +618,20 @@ export function createGitHubProvider(config: ProviderConfig): DevelopmentProvide
|
|
|
539
618
|
return {
|
|
540
619
|
items: prs,
|
|
541
620
|
hasMore,
|
|
542
|
-
nextCursor,
|
|
543
|
-
total: undefined,
|
|
621
|
+
...(nextCursor !== undefined && { nextCursor }),
|
|
544
622
|
}
|
|
545
623
|
},
|
|
546
624
|
|
|
547
|
-
async mergePullRequest(
|
|
548
|
-
owner
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
Authorization: `Bearer ${accessToken}`,
|
|
558
|
-
Accept: 'application/vnd.github.v3+json',
|
|
559
|
-
'Content-Type': 'application/json',
|
|
560
|
-
},
|
|
561
|
-
body: JSON.stringify({}),
|
|
562
|
-
}
|
|
563
|
-
)
|
|
625
|
+
async mergePullRequest(owner: string, repo: string, prNumber: number): Promise<boolean> {
|
|
626
|
+
const response = await fetch(`${baseUrl}/repos/${owner}/${repo}/pulls/${prNumber}/merge`, {
|
|
627
|
+
method: 'PUT',
|
|
628
|
+
headers: {
|
|
629
|
+
Authorization: `Bearer ${accessToken}`,
|
|
630
|
+
Accept: 'application/vnd.github.v3+json',
|
|
631
|
+
'Content-Type': 'application/json',
|
|
632
|
+
},
|
|
633
|
+
body: JSON.stringify({}),
|
|
634
|
+
})
|
|
564
635
|
|
|
565
636
|
return response.ok
|
|
566
637
|
},
|
|
@@ -588,7 +659,7 @@ export function createGitHubProvider(config: ProviderConfig): DevelopmentProvide
|
|
|
588
659
|
throw new Error(`GitHub API error: ${response.status} ${response.statusText}`)
|
|
589
660
|
}
|
|
590
661
|
|
|
591
|
-
const data = await response.json() as
|
|
662
|
+
const data = (await response.json()) as GitHubComment
|
|
592
663
|
return {
|
|
593
664
|
id: String(data.id),
|
|
594
665
|
body: data.body,
|