@gitkraken/core-gitlens 0.9.4 → 0.9.6
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/CHANGELOG.md +29 -1
- package/dist/git/models/issue.d.ts +25 -2
- package/dist/git/models/issue.js +3 -1
- package/dist/git/models/issue.js.map +1 -1
- package/dist/git/models/pullRequest.d.ts +62 -7
- package/dist/git/models/pullRequest.js +5 -1
- package/dist/git/models/pullRequest.js.map +1 -1
- package/dist/git/utils/issue.utils.d.ts +4 -0
- package/dist/git/utils/issue.utils.js +4 -0
- package/dist/git/utils/issue.utils.js.map +1 -1
- package/dist/git/utils/pullRequest.utils.d.ts +4 -0
- package/dist/git/utils/pullRequest.utils.js +8 -0
- package/dist/git/utils/pullRequest.utils.js.map +1 -1
- package/dist/plus/git-github/api/github.d.ts +64 -4
- package/dist/plus/git-github/api/github.js +232 -15
- package/dist/plus/git-github/api/github.js.map +1 -1
- package/dist/plus/git-github/models.d.ts +48 -6
- package/dist/plus/git-github/models.js +11 -10
- package/dist/plus/git-github/models.js.map +1 -1
- package/dist/plus/integrations/fieldPresence.d.ts +75 -0
- package/dist/plus/integrations/fieldPresence.js +381 -0
- package/dist/plus/integrations/fieldPresence.js.map +1 -0
- package/dist/plus/integrations/index.d.ts +6 -4
- package/dist/plus/integrations/index.js +2 -1
- package/dist/plus/integrations/index.js.map +1 -1
- package/dist/plus/integrations/integrationService.d.ts +7 -3
- package/dist/plus/integrations/integrationService.js.map +1 -1
- package/dist/plus/integrations/manager.d.ts +56 -6
- package/dist/plus/integrations/models/gitHostIntegration.d.ts +103 -9
- package/dist/plus/integrations/models/gitHostIntegration.js +116 -5
- package/dist/plus/integrations/models/gitHostIntegration.js.map +1 -1
- package/dist/plus/integrations/models/integration.d.ts +91 -4
- package/dist/plus/integrations/models/integration.js +56 -7
- package/dist/plus/integrations/models/integration.js.map +1 -1
- package/dist/plus/integrations/models/issuesIntegration.d.ts +44 -3
- package/dist/plus/integrations/models/issuesIntegration.js +51 -1
- package/dist/plus/integrations/models/issuesIntegration.js.map +1 -1
- package/dist/plus/integrations/providers/azure/azure.js +3 -3
- package/dist/plus/integrations/providers/azure/azure.js.map +1 -1
- package/dist/plus/integrations/providers/azure/models.d.ts +36 -4
- package/dist/plus/integrations/providers/azure/models.js +118 -8
- package/dist/plus/integrations/providers/azure/models.js.map +1 -1
- package/dist/plus/integrations/providers/azureDevOps.d.ts +102 -5
- package/dist/plus/integrations/providers/azureDevOps.js +264 -45
- package/dist/plus/integrations/providers/azureDevOps.js.map +1 -1
- package/dist/plus/integrations/providers/azureDevOpsServer.d.ts +30 -6
- package/dist/plus/integrations/providers/azureDevOpsServer.js +82 -21
- package/dist/plus/integrations/providers/azureDevOpsServer.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket/bitbucket.d.ts +21 -1
- package/dist/plus/integrations/providers/bitbucket/bitbucket.js +74 -10
- package/dist/plus/integrations/providers/bitbucket/bitbucket.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket/models.d.ts +40 -3
- package/dist/plus/integrations/providers/bitbucket/models.js +30 -7
- package/dist/plus/integrations/providers/bitbucket/models.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket-server/models.d.ts +2 -6
- package/dist/plus/integrations/providers/bitbucket-server/models.js +1 -3
- package/dist/plus/integrations/providers/bitbucket-server/models.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket-server/pullRequestSearch.d.ts +3 -1
- package/dist/plus/integrations/providers/bitbucket-server/pullRequestSearch.js +4 -1
- package/dist/plus/integrations/providers/bitbucket-server/pullRequestSearch.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket-server.d.ts +2 -2
- package/dist/plus/integrations/providers/bitbucket-server.js +7 -5
- package/dist/plus/integrations/providers/bitbucket-server.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket.d.ts +22 -2
- package/dist/plus/integrations/providers/bitbucket.js +29 -6
- package/dist/plus/integrations/providers/bitbucket.js.map +1 -1
- package/dist/plus/integrations/providers/github.d.ts +40 -3
- package/dist/plus/integrations/providers/github.js +133 -11
- package/dist/plus/integrations/providers/github.js.map +1 -1
- package/dist/plus/integrations/providers/gitlab/gitlab.d.ts +34 -1
- package/dist/plus/integrations/providers/gitlab/gitlab.js +118 -4
- package/dist/plus/integrations/providers/gitlab/gitlab.js.map +1 -1
- package/dist/plus/integrations/providers/gitlab/models.d.ts +70 -5
- package/dist/plus/integrations/providers/gitlab/models.js +106 -13
- package/dist/plus/integrations/providers/gitlab/models.js.map +1 -1
- package/dist/plus/integrations/providers/gitlab.d.ts +31 -2
- package/dist/plus/integrations/providers/gitlab.js +48 -8
- package/dist/plus/integrations/providers/gitlab.js.map +1 -1
- package/dist/plus/integrations/providers/jira-server.d.ts +1 -0
- package/dist/plus/integrations/providers/jira-server.js +9 -6
- package/dist/plus/integrations/providers/jira-server.js.map +1 -1
- package/dist/plus/integrations/providers/jira.d.ts +20 -1
- package/dist/plus/integrations/providers/jira.js +101 -6
- package/dist/plus/integrations/providers/jira.js.map +1 -1
- package/dist/plus/integrations/providers/jiraIssueByKey.d.ts +79 -0
- package/dist/plus/integrations/providers/jiraIssueByKey.js +58 -7
- package/dist/plus/integrations/providers/jiraIssueByKey.js.map +1 -1
- package/dist/plus/integrations/providers/linear.d.ts +19 -1
- package/dist/plus/integrations/providers/linear.js +97 -5
- package/dist/plus/integrations/providers/linear.js.map +1 -1
- package/dist/plus/integrations/providers/linearIssuesEtag.d.ts +42 -0
- package/dist/plus/integrations/providers/linearIssuesEtag.js +94 -0
- package/dist/plus/integrations/providers/linearIssuesEtag.js.map +1 -0
- package/dist/plus/integrations/providers/models.d.ts +51 -7
- package/dist/plus/integrations/providers/models.js +46 -17
- package/dist/plus/integrations/providers/models.js.map +1 -1
- package/dist/plus/integrations/providers/providerErrors.js +8 -1
- package/dist/plus/integrations/providers/providerErrors.js.map +1 -1
- package/dist/plus/integrations/providers/providersApi.d.ts +62 -3
- package/dist/plus/integrations/providers/providersApi.js +145 -4
- package/dist/plus/integrations/providers/providersApi.js.map +1 -1
- package/dist/plus/integrations/providers/pullRequestReviews.d.ts +13 -0
- package/dist/plus/integrations/providers/pullRequestReviews.js +30 -6
- package/dist/plus/integrations/providers/pullRequestReviews.js.map +1 -1
- package/dist/plus/integrations/providers/trello.js +10 -7
- package/dist/plus/integrations/providers/trello.js.map +1 -1
- package/dist/plus/integrations/providers/utils/providerPaging.d.ts +11 -0
- package/dist/plus/integrations/providers/utils/providerPaging.js +47 -1
- package/dist/plus/integrations/providers/utils/providerPaging.js.map +1 -1
- package/dist/plus/integrations/providers/utils.d.ts +1 -1
- package/dist/plus/integrations/reads/batchEtags.d.ts +69 -0
- package/dist/plus/integrations/reads/batchEtags.js +114 -0
- package/dist/plus/integrations/reads/batchEtags.js.map +1 -0
- package/dist/plus/integrations/reads/counts.js +2 -2
- package/dist/plus/integrations/reads/counts.js.map +1 -1
- package/dist/plus/integrations/reads/currentAccount.js +2 -2
- package/dist/plus/integrations/reads/currentAccount.js.map +1 -1
- package/dist/plus/integrations/reads/drains.d.ts +12 -3
- package/dist/plus/integrations/reads/drains.js +29 -5
- package/dist/plus/integrations/reads/drains.js.map +1 -1
- package/dist/plus/integrations/reads/etag.d.ts +26 -0
- package/dist/plus/integrations/reads/etag.js +108 -0
- package/dist/plus/integrations/reads/etag.js.map +1 -0
- package/dist/plus/integrations/reads/hierarchy.js +3 -3
- package/dist/plus/integrations/reads/hierarchy.js.map +1 -1
- package/dist/plus/integrations/reads/issueBatch.d.ts +47 -16
- package/dist/plus/integrations/reads/issueBatch.js +55 -87
- package/dist/plus/integrations/reads/issueBatch.js.map +1 -1
- package/dist/plus/integrations/reads/issueTracker.d.ts +1 -1
- package/dist/plus/integrations/reads/issueTracker.js +4 -4
- package/dist/plus/integrations/reads/issueTracker.js.map +1 -1
- package/dist/plus/integrations/reads/issues.d.ts +1 -1
- package/dist/plus/integrations/reads/issues.js +4 -4
- package/dist/plus/integrations/reads/issues.js.map +1 -1
- package/dist/plus/integrations/reads/pullRequestBatch.d.ts +44 -6
- package/dist/plus/integrations/reads/pullRequestBatch.js +31 -34
- package/dist/plus/integrations/reads/pullRequestBatch.js.map +1 -1
- package/dist/plus/integrations/reads/pullRequestBranches.d.ts +5 -2
- package/dist/plus/integrations/reads/pullRequestBranches.js +4 -3
- package/dist/plus/integrations/reads/pullRequestBranches.js.map +1 -1
- package/dist/plus/integrations/reads/pullRequests.js +8 -4
- package/dist/plus/integrations/reads/pullRequests.js.map +1 -1
- package/dist/plus/integrations/reads/sweeps.js +8 -4
- package/dist/plus/integrations/reads/sweeps.js.map +1 -1
- package/dist/plus/integrations/reads/warnings.d.ts +23 -8
- package/dist/plus/integrations/reads/warnings.js +43 -19
- package/dist/plus/integrations/reads/warnings.js.map +1 -1
- package/dist/plus/integrations/results.d.ts +12 -4
- package/dist/plus/integrations/results.js +2 -0
- package/dist/plus/integrations/results.js.map +1 -1
- package/docs/integrations.md +385 -23
- package/docs/kepler-read-api-parity.md +16 -2
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { GitFileIndexStatus } from "../../git/models/fileStatus.js";
|
|
2
2
|
import { Provider } from "../../git/models/remoteProvider.js";
|
|
3
3
|
import { IssueOrPullRequestState } from "../../git/models/issueOrPullRequest.js";
|
|
4
|
-
import { Issue, IssueLabel } from "../../git/models/issue.js";
|
|
5
|
-
import { PullRequest, PullRequestMergeableState, PullRequestReviewDecision, PullRequestReviewState, PullRequestStatusCheckRollupState } from "../../git/models/pullRequest.js";
|
|
4
|
+
import { Issue, IssueLabel, IssueProjection } from "../../git/models/issue.js";
|
|
5
|
+
import { PullRequest, PullRequestMergeableState, PullRequestProjection, PullRequestReviewDecision, PullRequestReviewState, PullRequestStatusCheckRollupState } from "../../git/models/pullRequest.js";
|
|
6
6
|
import { Endpoints } from "@octokit/types";
|
|
7
7
|
//#region ../plus/git-github/src/models.d.ts
|
|
8
8
|
export interface GitHubBlame {
|
|
@@ -207,7 +207,8 @@ export interface GitHubPullRequest extends GitHubPullRequestLite {
|
|
|
207
207
|
reviewRequests: {
|
|
208
208
|
nodes: {
|
|
209
209
|
asCodeOwner: boolean;
|
|
210
|
-
|
|
210
|
+
/** Empty for a team (or anything else that isn't a user), which the `... on User` selection doesn't match. */
|
|
211
|
+
requestedReviewer: Partial<GitHubMember> | null;
|
|
211
212
|
}[];
|
|
212
213
|
};
|
|
213
214
|
commits: {
|
|
@@ -223,8 +224,49 @@ export interface GitHubPullRequest extends GitHubPullRequestLite {
|
|
|
223
224
|
totalCommentsCount: number;
|
|
224
225
|
viewerCanUpdate: boolean;
|
|
225
226
|
}
|
|
227
|
+
/**
|
|
228
|
+
* An input beyond a pull request's lifecycle fields that `GitHubApi.getPullRequestsEtagFieldsBatch` can select.
|
|
229
|
+
* Mirrors the integrations package's `PullRequestEtagInclude`, which this package cannot import.
|
|
230
|
+
*/
|
|
231
|
+
export type GitHubPullRequestEtagInclude = 'mergeable' | 'reviewDecision' | 'checks';
|
|
232
|
+
/**
|
|
233
|
+
* The change state `GitHubApi.getPullRequestsEtagFieldsBatch` selects: a pull request's lifecycle fields, plus,
|
|
234
|
+
* for each requested {@link GitHubPullRequestEtagInclude}, what its etag reads. Each selection is the full
|
|
235
|
+
* fragment's own, so a value here is the one a full read would have mapped.
|
|
236
|
+
*/
|
|
237
|
+
export interface GitHubPullRequestEtagNode extends Pick<GitHubPullRequest, 'id' | 'number' | 'state' | 'isDraft' | 'updatedAt' | 'headRefOid'> {
|
|
238
|
+
/** Only with `mergeable`. */
|
|
239
|
+
mergeable?: GitHubPullRequestMergeableState | null;
|
|
240
|
+
/** Only with `reviewDecision`. `null` on a repository that requires no review. */
|
|
241
|
+
reviewDecision?: GitHubPullRequestReviewDecision | null;
|
|
242
|
+
/** Only with `checks`. */
|
|
243
|
+
commits?: {
|
|
244
|
+
nodes: {
|
|
245
|
+
commit: {
|
|
246
|
+
statusCheckRollup: {
|
|
247
|
+
state: GitHubPullRequestStatusCheckRollupState;
|
|
248
|
+
} | null;
|
|
249
|
+
};
|
|
250
|
+
}[];
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* An input beyond an issue's lifecycle fields that `GitHubApi.getIssuesEtagFieldsBatch` can select. Mirrors the
|
|
255
|
+
* integrations package's `IssueEtagInclude`, which this package cannot import.
|
|
256
|
+
*/
|
|
257
|
+
export type GitHubIssueEtagInclude = 'reactions';
|
|
258
|
+
/**
|
|
259
|
+
* The change state `GitHubApi.getIssuesEtagFieldsBatch` selects, plus, for each requested
|
|
260
|
+
* {@link GitHubIssueEtagInclude}, the full fragment's own selection of it.
|
|
261
|
+
*/
|
|
262
|
+
export interface GitHubIssueEtagNode extends Pick<GitHubIssue, 'id' | 'number' | 'state' | 'updatedAt'> {
|
|
263
|
+
/** Only with `reactions`: the thumbs-up reactions, as the full fragment selects them. */
|
|
264
|
+
reactions?: {
|
|
265
|
+
totalCount: number;
|
|
266
|
+
};
|
|
267
|
+
}
|
|
226
268
|
export type GitHubViewerPermission = 'ADMIN' | 'MAINTAIN' | 'WRITE' | 'TRIAGE' | 'READ' | 'NONE';
|
|
227
|
-
export declare function fromGitHubPullRequestLite(pr: GitHubPullRequestLite, provider: Provider): PullRequest;
|
|
269
|
+
export declare function fromGitHubPullRequestLite(pr: GitHubPullRequestLite, provider: Provider, projection?: PullRequestProjection): PullRequest;
|
|
228
270
|
export declare function fromGitHubIssueOrPullRequestState(state: GitHubPullRequestState): IssueOrPullRequestState;
|
|
229
271
|
export declare function toGitHubPullRequestState(state: IssueOrPullRequestState): GitHubPullRequestState;
|
|
230
272
|
export declare function fromGitHubPullRequestReviewDecision(reviewDecision: GitHubPullRequestReviewDecision): PullRequestReviewDecision;
|
|
@@ -233,7 +275,7 @@ export declare function toGitHubPullRequestReviewDecision(reviewDecision: PullRe
|
|
|
233
275
|
export declare function fromGitHubPullRequestMergeableState(mergeableState: GitHubPullRequestMergeableState): PullRequestMergeableState;
|
|
234
276
|
export declare function toGitHubPullRequestMergeableState(mergeableState: PullRequestMergeableState): GitHubPullRequestMergeableState;
|
|
235
277
|
export declare function fromGitHubPullRequestStatusCheckRollupState(state: GitHubPullRequestStatusCheckRollupState | null | undefined): PullRequestStatusCheckRollupState | undefined;
|
|
236
|
-
export declare function fromGitHubPullRequest(pr: GitHubPullRequest, provider: Provider): PullRequest;
|
|
237
|
-
export declare function fromGitHubIssue(value: GitHubIssue, provider: Provider): Issue;
|
|
278
|
+
export declare function fromGitHubPullRequest(pr: GitHubPullRequest, provider: Provider, projection?: PullRequestProjection): PullRequest;
|
|
279
|
+
export declare function fromGitHubIssue(value: GitHubIssue, provider: Provider, projection?: IssueProjection): Issue;
|
|
238
280
|
//#endregion
|
|
239
281
|
//# sourceMappingURL=models.d.ts.map
|
|
@@ -12,11 +12,12 @@ function fromCommitFileStatus(status) {
|
|
|
12
12
|
case "copied": return GitFileIndexStatus.Copied;
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
-
/** `ghost` is how github.com renders an actor whose account was deleted */
|
|
15
|
+
/** `ghost` is how github.com renders an actor whose account was deleted, under the handle `ghost` */
|
|
16
16
|
function fromGitHubMemberOrGhost(member) {
|
|
17
17
|
if (member == null) return {
|
|
18
18
|
id: "ghost",
|
|
19
|
-
name: "ghost"
|
|
19
|
+
name: "ghost",
|
|
20
|
+
username: "ghost"
|
|
20
21
|
};
|
|
21
22
|
return {
|
|
22
23
|
id: member.login,
|
|
@@ -26,7 +27,7 @@ function fromGitHubMemberOrGhost(member) {
|
|
|
26
27
|
url: member.url
|
|
27
28
|
};
|
|
28
29
|
}
|
|
29
|
-
function fromGitHubPullRequestLite(pr, provider) {
|
|
30
|
+
function fromGitHubPullRequestLite(pr, provider, projection) {
|
|
30
31
|
return new PullRequest(provider, fromGitHubMemberOrGhost(pr.author), String(pr.number), pr.id, pr.title, pr.permalink, {
|
|
31
32
|
owner: pr.repository.owner.login,
|
|
32
33
|
repo: pr.repository.name,
|
|
@@ -55,7 +56,7 @@ function fromGitHubPullRequestLite(pr, provider) {
|
|
|
55
56
|
isFork: pr.repository?.isFork
|
|
56
57
|
},
|
|
57
58
|
isCrossRepository: pr.isCrossRepository
|
|
58
|
-
}, pr.isDraft, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, fromGitHubPullRequestStack(pr), void 0, pr.body ?? void 0);
|
|
59
|
+
}, pr.isDraft, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, fromGitHubPullRequestStack(pr), void 0, pr.body ?? void 0, pr.number, void 0, projection);
|
|
59
60
|
}
|
|
60
61
|
/** Both fields are absent on GitHub Enterprise Server (never selected) and `null` when unstacked. */
|
|
61
62
|
function fromGitHubPullRequestStack(pr) {
|
|
@@ -123,7 +124,7 @@ function fromGitHubPullRequestStatusCheckRollupState(state) {
|
|
|
123
124
|
default: return;
|
|
124
125
|
}
|
|
125
126
|
}
|
|
126
|
-
function fromGitHubPullRequest(pr, provider) {
|
|
127
|
+
function fromGitHubPullRequest(pr, provider, projection) {
|
|
127
128
|
const viewerLatestReview = pr.viewerLatestReview;
|
|
128
129
|
const latestReviews = [...pr.latestReviews.nodes, ...viewerLatestReview != null && !pr.latestReviews.nodes.some((r) => r.id === viewerLatestReview.id) ? [viewerLatestReview] : []].filter((review) => review.state !== "PENDING");
|
|
129
130
|
return new PullRequest(provider, fromGitHubMemberOrGhost(pr.author), String(pr.number), pr.id, pr.title, pr.permalink, {
|
|
@@ -154,10 +155,10 @@ function fromGitHubPullRequest(pr, provider) {
|
|
|
154
155
|
isFork: pr.repository?.isFork
|
|
155
156
|
},
|
|
156
157
|
isCrossRepository: pr.isCrossRepository
|
|
157
|
-
}, pr.isDraft, pr.additions, pr.deletions, pr.totalCommentsCount, 0, fromGitHubPullRequestReviewDecision(pr.reviewDecision), pr.reviewRequests.nodes.map((r) => r.requestedReviewer != null ? {
|
|
158
|
+
}, pr.isDraft, pr.additions, pr.deletions, pr.totalCommentsCount, void 0, fromGitHubPullRequestReviewDecision(pr.reviewDecision), pr.reviewRequests.nodes.map((r) => r.requestedReviewer != null ? {
|
|
158
159
|
isCodeOwner: r.asCodeOwner,
|
|
159
160
|
reviewer: {
|
|
160
|
-
id: r.requestedReviewer.login,
|
|
161
|
+
id: r.requestedReviewer.login ?? "",
|
|
161
162
|
name: r.requestedReviewer.login,
|
|
162
163
|
username: r.requestedReviewer.login,
|
|
163
164
|
avatarUrl: r.requestedReviewer.avatarUrl,
|
|
@@ -174,9 +175,9 @@ function fromGitHubPullRequest(pr, provider) {
|
|
|
174
175
|
username: r.login,
|
|
175
176
|
avatarUrl: r.avatarUrl,
|
|
176
177
|
url: r.url
|
|
177
|
-
})), fromGitHubPullRequestStatusCheckRollupState(pr.commits.nodes?.[0]?.commit.statusCheckRollup?.state), void 0, void 0, pr.commits.totalCount, fromGitHubPullRequestStack(pr), pr.changedFiles, pr.body ?? void 0);
|
|
178
|
+
})), fromGitHubPullRequestStatusCheckRollupState(pr.commits.nodes?.[0]?.commit.statusCheckRollup?.state), void 0, void 0, pr.commits.totalCount, fromGitHubPullRequestStack(pr), pr.changedFiles, pr.body ?? void 0, pr.number, void 0, projection);
|
|
178
179
|
}
|
|
179
|
-
function fromGitHubIssue(value, provider) {
|
|
180
|
+
function fromGitHubIssue(value, provider, projection) {
|
|
180
181
|
return new Issue({
|
|
181
182
|
id: provider.id,
|
|
182
183
|
name: provider.name,
|
|
@@ -202,7 +203,7 @@ function fromGitHubIssue(value, provider) {
|
|
|
202
203
|
}, value.closedAt == null ? void 0 : new Date(value.closedAt), value.labels?.nodes == null ? void 0 : value.labels.nodes.map((label) => ({
|
|
203
204
|
color: label.color,
|
|
204
205
|
name: label.name
|
|
205
|
-
})), value.comments?.totalCount, value.reactions?.totalCount, value.body);
|
|
206
|
+
})), value.comments?.totalCount, value.reactions?.totalCount, value.body, void 0, void 0, void 0, void 0, void 0, void 0, projection);
|
|
206
207
|
}
|
|
207
208
|
function fromGitHubViewerPermissionToAccessLevel(permission) {
|
|
208
209
|
switch (permission) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","names":[],"sources":["../../../../plus/git-github/src/models.ts"],"sourcesContent":["import type { Endpoints } from '@octokit/types';\nimport { GitFileIndexStatus } from '@gitlens/git/models/fileStatus.js';\nimport type { IssueLabel } from '@gitlens/git/models/issue.js';\nimport { Issue, RepositoryAccessLevel } from '@gitlens/git/models/issue.js';\nimport type { PullRequestMember, PullRequestStackInfo, PullRequestState } from '@gitlens/git/models/pullRequest.js';\nimport {\n\tPullRequest,\n\tPullRequestMergeableState,\n\tPullRequestReviewDecision,\n\tPullRequestReviewState,\n\tPullRequestStatusCheckRollupState,\n} from '@gitlens/git/models/pullRequest.js';\nimport type { Provider } from '@gitlens/git/models/remoteProvider.js';\n\nexport interface GitHubBlame {\n\tranges: GitHubBlameRange[];\n\tviewer?: string;\n}\n\nexport interface GitHubBlameRange {\n\tstartingLine: number;\n\tendingLine: number;\n\tcommit: GitHubCommit;\n}\n\nexport interface GitHubBranch {\n\tname: string;\n\ttarget: {\n\t\toid: string;\n\t\tauthoredDate: string;\n\t\tcommittedDate: string;\n\t};\n}\n\nexport interface GitHubCommit {\n\toid: string;\n\tparents: { nodes: { oid: string }[] };\n\tmessage: string;\n\tadditions?: number | undefined;\n\tchangedFiles?: number | undefined;\n\tdeletions?: number | undefined;\n\tauthor: { avatarUrl: string | undefined; date: string; email: string | undefined; name: string };\n\tcommitter: { date: string; email: string | undefined; name: string };\n\n\tfiles?: Endpoints['GET /repos/{owner}/{repo}/commits/{ref}']['response']['data']['files'];\n}\n\nexport interface GitHubCommitRef {\n\toid: string;\n}\n\nexport type GitHubContributor = Endpoints['GET /repos/{owner}/{repo}/contributors']['response']['data'][0];\n\nexport type GitHubSshSigningKey = Endpoints['GET /users/{username}/ssh_signing_keys']['response']['data'][0];\n\nexport interface GitHubMember {\n\tlogin: string;\n\tavatarUrl: string;\n\turl: string;\n}\n\nexport interface GitHubPagedResult<T> {\n\tpageInfo: GitHubPageInfo;\n\ttotalCount: number;\n\tvalues: T[];\n}\nexport interface GitHubPageInfo {\n\tstartCursor?: string | null;\n\tendCursor?: string | null;\n\thasNextPage: boolean;\n\thasPreviousPage: boolean;\n}\n\nexport interface GitHubTag {\n\tname: string;\n\ttarget: {\n\t\toid: string;\n\t\tauthoredDate?: string;\n\t\tcommittedDate?: string;\n\t\tmessage?: string | null;\n\t\ttagger?: {\n\t\t\tdate: string;\n\t\t} | null;\n\n\t\ttarget?: {\n\t\t\toid?: string;\n\t\t\tauthoredDate?: string;\n\t\t\tcommittedDate?: string;\n\t\t\tmessage?: string | null;\n\t\t};\n\t};\n}\n\nexport type GitHubCommitFileStatus = NonNullable<\n\tEndpoints['GET /repos/{owner}/{repo}/commits/{ref}']['response']['data']['files']\n>[0]['status'];\n\nexport function fromCommitFileStatus(status: GitHubCommitFileStatus): GitFileIndexStatus | undefined {\n\tswitch (status) {\n\t\tcase 'added':\n\t\t\treturn GitFileIndexStatus.Added;\n\t\tcase 'changed':\n\t\tcase 'modified':\n\t\t\treturn GitFileIndexStatus.Modified;\n\t\tcase 'removed':\n\t\t\treturn GitFileIndexStatus.Deleted;\n\t\tcase 'renamed':\n\t\t\treturn GitFileIndexStatus.Renamed;\n\t\tcase 'copied':\n\t\t\treturn GitFileIndexStatus.Copied;\n\t}\n\treturn undefined;\n}\n\nexport interface GitHubIssueOrPullRequest {\n\t__typename: 'Issue' | 'PullRequest';\n\n\tclosed: boolean;\n\tclosedAt: string | null;\n\tcreatedAt: string;\n\tid: string;\n\tnumber: number;\n\tstate: GitHubIssueOrPullRequestState;\n\ttitle: string;\n\tupdatedAt: string;\n\turl: string;\n}\n\nexport type GitHubIssueState = 'OPEN' | 'CLOSED';\nexport type GitHubPullRequestState = 'OPEN' | 'CLOSED' | 'MERGED';\nexport type GitHubIssueOrPullRequestState = GitHubIssueState | GitHubPullRequestState;\n\nexport interface GitHubPullRequestLite extends Omit<GitHubIssueOrPullRequest, '__typename'> {\n\t/** `Actor` is nullable in GitHub's schema — `null` once the author's account is deleted */\n\tauthor: GitHubMember | null;\n\tbody: string | null;\n\n\tbaseRefName: string;\n\tbaseRefOid: string;\n\n\theadRefName: string;\n\theadRefOid: string;\n\theadRepository: {\n\t\tisFork: boolean;\n\t\tname: string;\n\t\towner: {\n\t\t\tlogin: string;\n\t\t};\n\t\tsshUrl: string;\n\t\turl: string;\n\t};\n\n\tisCrossRepository: boolean;\n\tisDraft: boolean;\n\tmergedAt: string | null;\n\tpermalink: string;\n\n\trepository: {\n\t\tisFork: boolean;\n\t\tname: string;\n\t\towner: {\n\t\t\tlogin: string;\n\t\t};\n\t\tsshUrl: string;\n\t\turl: string;\n\t\tviewerPermission: GitHubViewerPermission;\n\t};\n\n\t/** Only selected against github.com — GitHub Enterprise Server schemas lag and reject the field. */\n\tstack?: GitHubPullRequestStack | null;\n\t/** Only selected against github.com — see `stack`. */\n\tstackEntry?: { position: number } | null;\n}\n\n/** GitHub's stacked-pull-request object. Read-only; all stack mutations are REST-only. */\nexport interface GitHubPullRequestStack {\n\tid: string;\n\tnumber: number;\n\tsize: number;\n\t/** The branch the bottom of the stack targets — the stack's trunk. */\n\tbaseRefName: string;\n}\n\nexport interface GitHubIssue extends Omit<GitHubIssueOrPullRequest, '__typename'> {\n\t/** `Actor` is nullable in GitHub's schema — `null` once the author's account is deleted */\n\tauthor: GitHubMember | null;\n\tassignees: { nodes: GitHubMember[] };\n\tcomments?: {\n\t\ttotalCount: number;\n\t};\n\tlabels?: { nodes: IssueLabel[] };\n\treactions?: {\n\t\ttotalCount: number;\n\t};\n\trepository: {\n\t\tname: string;\n\t\towner: {\n\t\t\tlogin: string;\n\t\t};\n\t\tviewerPermission: GitHubViewerPermission;\n\t\turl: string;\n\t};\n\tbody: string;\n}\n\nexport type GitHubPullRequestReviewDecision = 'CHANGES_REQUESTED' | 'APPROVED' | 'REVIEW_REQUIRED';\nexport type GitHubPullRequestMergeableState = 'MERGEABLE' | 'CONFLICTING' | 'UNKNOWN';\nexport type GitHubPullRequestStatusCheckRollupState = 'SUCCESS' | 'FAILURE' | 'PENDING' | 'EXPECTED' | 'ERROR';\nexport type GitHubPullRequestReviewState = 'APPROVED' | 'CHANGES_REQUESTED' | 'COMMENTED' | 'DISMISSED' | 'PENDING';\n\ntype GitHubPullRequestReview = {\n\tid: string;\n\tauthor: GitHubMember | null;\n\tstate: GitHubPullRequestReviewState;\n\tcommit?: { oid: string } | null;\n};\n\nexport interface GitHubPullRequest extends GitHubPullRequestLite {\n\tadditions: number;\n\tassignees: {\n\t\tnodes: GitHubMember[];\n\t};\n\tchangedFiles: number;\n\tchecksUrl: string;\n\tdeletions: number;\n\tmergeable: GitHubPullRequestMergeableState;\n\treviewDecision: GitHubPullRequestReviewDecision;\n\tlatestReviews: {\n\t\tnodes: GitHubPullRequestReview[];\n\t};\n\t/**\n\t * The current user's own latest review. `latestReviews` is capped, so on a heavily-reviewed pull request\n\t * the viewer's own review can fall outside that window — which is exactly the row a \"needs my review\"\n\t * surface is asking about.\n\t */\n\tviewerLatestReview: GitHubPullRequestReview | null;\n\treviewRequests: {\n\t\tnodes: {\n\t\t\tasCodeOwner: boolean;\n\t\t\trequestedReviewer: GitHubMember | null;\n\t\t}[];\n\t};\n\tcommits: {\n\t\ttotalCount: number;\n\t\tnodes: {\n\t\t\tcommit: {\n\t\t\t\tstatusCheckRollup: {\n\t\t\t\t\tstate: 'SUCCESS' | 'FAILURE' | 'PENDING' | 'EXPECTED' | 'ERROR';\n\t\t\t\t} | null;\n\t\t\t};\n\t\t}[];\n\t};\n\ttotalCommentsCount: number;\n\tviewerCanUpdate: boolean;\n}\n\nexport type GitHubViewerPermission =\n\t| 'ADMIN' // Can read, clone, and push to this repository. Can also manage issues, pull requests, and repository settings, including adding collaborators\n\t| 'MAINTAIN' // Can read, clone, and push to this repository. They can also manage issues, pull requests, and some repository settings\n\t| 'WRITE' // Can read, clone, and push to this repository. Can also manage issues and pull requests\n\t| 'TRIAGE' // Can read and clone this repository. Can also manage issues and pull requests\n\t| 'READ' // Can read and clone this repository. Can also open and comment on issues and pull requests\n\t| 'NONE';\n\n/** `ghost` is how github.com renders an actor whose account was deleted */\nfunction fromGitHubMemberOrGhost(member: GitHubMember | null | undefined): PullRequestMember {\n\tif (member == null) return { id: 'ghost', name: 'ghost' };\n\n\treturn {\n\t\tid: member.login,\n\t\tname: member.login,\n\t\tusername: member.login,\n\t\tavatarUrl: member.avatarUrl,\n\t\turl: member.url,\n\t};\n}\n\nexport function fromGitHubPullRequestLite(pr: GitHubPullRequestLite, provider: Provider): PullRequest {\n\treturn new PullRequest(\n\t\tprovider,\n\t\tfromGitHubMemberOrGhost(pr.author),\n\t\tString(pr.number),\n\t\tpr.id,\n\t\tpr.title,\n\t\tpr.permalink,\n\t\t{\n\t\t\towner: pr.repository.owner.login,\n\t\t\trepo: pr.repository.name,\n\t\t\taccessLevel: fromGitHubViewerPermissionToAccessLevel(pr.repository.viewerPermission),\n\t\t},\n\t\tfromGitHubIssueOrPullRequestState(pr.state),\n\t\tnew Date(pr.createdAt),\n\t\tnew Date(pr.updatedAt),\n\t\tpr.closedAt == null ? undefined : new Date(pr.closedAt),\n\t\tpr.mergedAt == null ? undefined : new Date(pr.mergedAt),\n\t\tundefined,\n\t\tundefined,\n\t\t{\n\t\t\thead: {\n\t\t\t\texists: pr.headRepository != null,\n\t\t\t\towner: pr.headRepository?.owner.login,\n\t\t\t\trepo: pr.headRepository?.name,\n\t\t\t\tsha: pr.headRefOid,\n\t\t\t\tbranch: pr.headRefName,\n\t\t\t\turl: pr.headRepository?.url,\n\t\t\t\tcloneHttps: pr.headRepository != null ? `${pr.headRepository.url}.git` : undefined,\n\t\t\t\tcloneSsh: pr.headRepository?.sshUrl,\n\t\t\t\tisFork: pr.headRepository?.isFork,\n\t\t\t},\n\t\t\tbase: {\n\t\t\t\texists: pr.repository != null,\n\t\t\t\towner: pr.repository?.owner.login,\n\t\t\t\trepo: pr.repository?.name,\n\t\t\t\tsha: pr.baseRefOid,\n\t\t\t\tbranch: pr.baseRefName,\n\t\t\t\turl: pr.repository?.url,\n\t\t\t\tcloneHttps: pr.repository != null ? `${pr.repository.url}.git` : undefined,\n\t\t\t\tcloneSsh: pr.repository?.sshUrl,\n\t\t\t\tisFork: pr.repository?.isFork,\n\t\t\t},\n\t\t\tisCrossRepository: pr.isCrossRepository,\n\t\t},\n\t\tpr.isDraft,\n\t\t// The lite fragment selects nothing between `isDraft` and `stack`.\n\t\tundefined, // additions\n\t\tundefined, // deletions\n\t\tundefined, // commentsCount\n\t\tundefined, // thumbsUpCount\n\t\tundefined, // reviewDecision\n\t\tundefined, // reviewRequests\n\t\tundefined, // latestReviews\n\t\tundefined, // assignees\n\t\tundefined, // statusCheckRollupState\n\t\tundefined, // project\n\t\tundefined, // version\n\t\tundefined, // commitCount\n\t\tfromGitHubPullRequestStack(pr),\n\t\tundefined, // filesChanged\n\t\tpr.body ?? undefined,\n\t);\n}\n\n/** Both fields are absent on GitHub Enterprise Server (never selected) and `null` when unstacked. */\nfunction fromGitHubPullRequestStack(pr: GitHubPullRequestLite): PullRequestStackInfo | undefined {\n\tif (pr.stack == null || pr.stackEntry == null) return undefined;\n\n\treturn {\n\t\tid: pr.stack.id,\n\t\tnumber: pr.stack.number,\n\t\tsize: pr.stack.size,\n\t\tposition: pr.stackEntry.position,\n\t\tbaseRef: pr.stack.baseRefName,\n\t};\n}\n\nexport function fromGitHubIssueOrPullRequestState(state: GitHubPullRequestState): PullRequestState {\n\treturn state === 'MERGED' ? 'merged' : state === 'CLOSED' ? 'closed' : 'opened';\n}\n\nexport function toGitHubPullRequestState(state: PullRequestState): GitHubPullRequestState {\n\treturn state === 'merged' ? 'MERGED' : state === 'closed' ? 'CLOSED' : 'OPEN';\n}\n\nexport function fromGitHubPullRequestReviewDecision(\n\treviewDecision: GitHubPullRequestReviewDecision,\n): PullRequestReviewDecision {\n\tswitch (reviewDecision) {\n\t\tcase 'APPROVED':\n\t\t\treturn PullRequestReviewDecision.Approved;\n\t\tcase 'CHANGES_REQUESTED':\n\t\t\treturn PullRequestReviewDecision.ChangesRequested;\n\t\tcase 'REVIEW_REQUIRED':\n\t\t\treturn PullRequestReviewDecision.ReviewRequired;\n\t}\n}\n\nexport function fromGitHubPullRequestReviewState(state: GitHubPullRequestReviewState): PullRequestReviewState {\n\tswitch (state) {\n\t\tcase 'APPROVED':\n\t\t\treturn PullRequestReviewState.Approved;\n\t\tcase 'CHANGES_REQUESTED':\n\t\t\treturn PullRequestReviewState.ChangesRequested;\n\t\tcase 'COMMENTED':\n\t\t\treturn PullRequestReviewState.Commented;\n\t\tcase 'DISMISSED':\n\t\t\treturn PullRequestReviewState.Dismissed;\n\t\tcase 'PENDING':\n\t\t\treturn PullRequestReviewState.Pending;\n\t}\n}\n\nexport function toGitHubPullRequestReviewDecision(\n\treviewDecision: PullRequestReviewDecision,\n): GitHubPullRequestReviewDecision {\n\tswitch (reviewDecision) {\n\t\tcase PullRequestReviewDecision.Approved:\n\t\t\treturn 'APPROVED';\n\t\tcase PullRequestReviewDecision.ChangesRequested:\n\t\t\treturn 'CHANGES_REQUESTED';\n\t\tcase PullRequestReviewDecision.ReviewRequired:\n\t\t\treturn 'REVIEW_REQUIRED';\n\t}\n}\n\nexport function fromGitHubPullRequestMergeableState(\n\tmergeableState: GitHubPullRequestMergeableState,\n): PullRequestMergeableState {\n\tswitch (mergeableState) {\n\t\tcase 'MERGEABLE':\n\t\t\treturn PullRequestMergeableState.Mergeable;\n\t\tcase 'CONFLICTING':\n\t\t\treturn PullRequestMergeableState.Conflicting;\n\t\tcase 'UNKNOWN':\n\t\t\treturn PullRequestMergeableState.Unknown;\n\t}\n}\n\nexport function toGitHubPullRequestMergeableState(\n\tmergeableState: PullRequestMergeableState,\n): GitHubPullRequestMergeableState {\n\tswitch (mergeableState) {\n\t\tcase PullRequestMergeableState.Mergeable:\n\t\t\treturn 'MERGEABLE';\n\t\tcase PullRequestMergeableState.Conflicting:\n\t\t\treturn 'CONFLICTING';\n\t\tcase PullRequestMergeableState.FailingChecks:\n\t\t\treturn 'UNKNOWN';\n\t\tcase PullRequestMergeableState.BlockedByPolicy:\n\t\t\treturn 'UNKNOWN';\n\t\tcase PullRequestMergeableState.Unknown:\n\t\t\treturn 'UNKNOWN';\n\t}\n}\n\nexport function fromGitHubPullRequestStatusCheckRollupState(\n\tstate: GitHubPullRequestStatusCheckRollupState | null | undefined,\n): PullRequestStatusCheckRollupState | undefined {\n\tswitch (state) {\n\t\tcase 'SUCCESS':\n\t\tcase 'EXPECTED':\n\t\t\treturn PullRequestStatusCheckRollupState.Success;\n\t\tcase 'FAILURE':\n\t\tcase 'ERROR':\n\t\t\treturn PullRequestStatusCheckRollupState.Failed;\n\t\tcase 'PENDING':\n\t\t\treturn PullRequestStatusCheckRollupState.Pending;\n\t\tdefault:\n\t\t\treturn undefined;\n\t}\n}\n\nexport function fromGitHubPullRequest(pr: GitHubPullRequest, provider: Provider): PullRequest {\n\t// `latestReviews` is capped, so keep the viewer's own review even when it falls outside that window, deduped\n\t// by review id since the two selections overlap. Unsubmitted drafts are dropped from the union rather than\n\t// from the viewer's side alone: `PENDING` is in GitHub's review-state enum on both selections, and the field\n\t// this feeds is documented as reviews already SUBMITTED — a draft there tells a \"needs my review\" consumer\n\t// the review is done, and a reviewer with a submitted review plus a draft would get two conflicting rows.\n\tconst viewerLatestReview = pr.viewerLatestReview;\n\tconst latestReviews = [\n\t\t...pr.latestReviews.nodes,\n\t\t...(viewerLatestReview != null && !pr.latestReviews.nodes.some(r => r.id === viewerLatestReview.id)\n\t\t\t? [viewerLatestReview]\n\t\t\t: []),\n\t].filter(review => review.state !== 'PENDING');\n\n\treturn new PullRequest(\n\t\tprovider,\n\t\tfromGitHubMemberOrGhost(pr.author),\n\t\tString(pr.number),\n\t\tpr.id,\n\t\tpr.title,\n\t\tpr.permalink,\n\t\t{\n\t\t\towner: pr.repository.owner.login,\n\t\t\trepo: pr.repository.name,\n\t\t\taccessLevel: fromGitHubViewerPermissionToAccessLevel(pr.repository.viewerPermission),\n\t\t},\n\t\tfromGitHubIssueOrPullRequestState(pr.state),\n\t\tnew Date(pr.createdAt),\n\t\tnew Date(pr.updatedAt),\n\t\tpr.closedAt == null ? undefined : new Date(pr.closedAt),\n\t\tpr.mergedAt == null ? undefined : new Date(pr.mergedAt),\n\t\tfromGitHubPullRequestMergeableState(pr.mergeable),\n\t\tpr.viewerCanUpdate,\n\t\t{\n\t\t\thead: {\n\t\t\t\texists: pr.headRepository != null,\n\t\t\t\towner: pr.headRepository?.owner.login,\n\t\t\t\trepo: pr.headRepository?.name,\n\t\t\t\tsha: pr.headRefOid,\n\t\t\t\tbranch: pr.headRefName,\n\t\t\t\turl: pr.headRepository?.url,\n\t\t\t\tcloneHttps: pr.headRepository != null ? `${pr.headRepository.url}.git` : undefined,\n\t\t\t\tcloneSsh: pr.headRepository?.sshUrl,\n\t\t\t\tisFork: pr.headRepository?.isFork,\n\t\t\t},\n\t\t\tbase: {\n\t\t\t\texists: pr.repository != null,\n\t\t\t\towner: pr.repository?.owner.login,\n\t\t\t\trepo: pr.repository?.name,\n\t\t\t\tsha: pr.baseRefOid,\n\t\t\t\tbranch: pr.baseRefName,\n\t\t\t\turl: pr.repository?.url,\n\t\t\t\tcloneHttps: pr.repository != null ? `${pr.repository.url}.git` : undefined,\n\t\t\t\tcloneSsh: pr.repository?.sshUrl,\n\t\t\t\tisFork: pr.repository?.isFork,\n\t\t\t},\n\t\t\tisCrossRepository: pr.isCrossRepository,\n\t\t},\n\t\tpr.isDraft,\n\t\tpr.additions,\n\t\tpr.deletions,\n\t\tpr.totalCommentsCount,\n\t\t0, //pr.reactions.totalCount,\n\t\tfromGitHubPullRequestReviewDecision(pr.reviewDecision),\n\t\tpr.reviewRequests.nodes\n\t\t\t.map(r =>\n\t\t\t\tr.requestedReviewer != null\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tisCodeOwner: r.asCodeOwner,\n\t\t\t\t\t\t\treviewer: {\n\t\t\t\t\t\t\t\tid: r.requestedReviewer.login,\n\t\t\t\t\t\t\t\tname: r.requestedReviewer.login,\n\t\t\t\t\t\t\t\tusername: r.requestedReviewer.login,\n\t\t\t\t\t\t\t\tavatarUrl: r.requestedReviewer.avatarUrl,\n\t\t\t\t\t\t\t\turl: r.requestedReviewer.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstate: PullRequestReviewState.ReviewRequested,\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined,\n\t\t\t)\n\t\t\t.filter(<T>(r?: T): r is T => Boolean(r)),\n\t\tlatestReviews.map(r => ({\n\t\t\treviewer: fromGitHubMemberOrGhost(r.author),\n\t\t\tstate: fromGitHubPullRequestReviewState(r.state),\n\t\t\tcommitOid: r.commit?.oid,\n\t\t})),\n\t\tpr.assignees.nodes.map(r => ({\n\t\t\tid: r.login,\n\t\t\tname: r.login,\n\t\t\tusername: r.login,\n\t\t\tavatarUrl: r.avatarUrl,\n\t\t\turl: r.url,\n\t\t})),\n\t\tfromGitHubPullRequestStatusCheckRollupState(pr.commits.nodes?.[0]?.commit.statusCheckRollup?.state),\n\t\tundefined, // project\n\t\tundefined, // version\n\t\tpr.commits.totalCount,\n\t\tfromGitHubPullRequestStack(pr),\n\t\tpr.changedFiles,\n\t\tpr.body ?? undefined,\n\t);\n}\n\nexport function fromGitHubIssue(value: GitHubIssue, provider: Provider): Issue {\n\treturn new Issue(\n\t\t{\n\t\t\tid: provider.id,\n\t\t\tname: provider.name,\n\t\t\tdomain: provider.domain,\n\t\t\ticon: provider.icon,\n\t\t},\n\t\tString(value.number),\n\t\tvalue.id,\n\t\tvalue.title,\n\t\tvalue.url,\n\t\tnew Date(value.createdAt),\n\t\tnew Date(value.updatedAt),\n\t\tvalue.closed,\n\t\tfromGitHubIssueOrPullRequestState(value.state),\n\t\tvalue.author == null\n\t\t\t? undefined\n\t\t\t: {\n\t\t\t\t\tid: value.author.login,\n\t\t\t\t\tname: value.author.login,\n\t\t\t\t\tusername: value.author.login,\n\t\t\t\t\tavatarUrl: value.author.avatarUrl,\n\t\t\t\t\turl: value.author.url,\n\t\t\t\t},\n\t\tvalue.assignees.nodes.map(assignee => ({\n\t\t\tid: assignee.login,\n\t\t\tname: assignee.login,\n\t\t\tusername: assignee.login,\n\t\t\tavatarUrl: assignee.avatarUrl,\n\t\t\turl: assignee.url,\n\t\t})),\n\t\t{\n\t\t\towner: value.repository.owner.login,\n\t\t\trepo: value.repository.name,\n\t\t\taccessLevel: fromGitHubViewerPermissionToAccessLevel(value.repository.viewerPermission),\n\t\t\turl: value.repository.url,\n\t\t},\n\t\tvalue.closedAt == null ? undefined : new Date(value.closedAt),\n\t\tvalue.labels?.nodes == null\n\t\t\t? undefined\n\t\t\t: value.labels.nodes.map(label => ({\n\t\t\t\t\tcolor: label.color,\n\t\t\t\t\tname: label.name,\n\t\t\t\t})),\n\t\tvalue.comments?.totalCount,\n\t\tvalue.reactions?.totalCount,\n\t\tvalue.body,\n\t);\n}\n\nfunction fromGitHubViewerPermissionToAccessLevel(\n\tpermission: GitHubViewerPermission | null | undefined,\n): RepositoryAccessLevel {\n\tswitch (permission) {\n\t\tcase 'ADMIN':\n\t\t\treturn RepositoryAccessLevel.Admin;\n\t\tcase 'MAINTAIN':\n\t\t\treturn RepositoryAccessLevel.Maintain;\n\t\tcase 'WRITE':\n\t\t\treturn RepositoryAccessLevel.Write;\n\t\tcase 'TRIAGE':\n\t\t\treturn RepositoryAccessLevel.Triage;\n\t\tcase 'READ':\n\t\t\treturn RepositoryAccessLevel.Read;\n\t\tdefault:\n\t\t\treturn RepositoryAccessLevel.None;\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"models.js","names":[],"sources":["../../../../plus/git-github/src/models.ts"],"sourcesContent":["import type { Endpoints } from '@octokit/types';\nimport { GitFileIndexStatus } from '@gitlens/git/models/fileStatus.js';\nimport type { IssueLabel, IssueProjection } from '@gitlens/git/models/issue.js';\nimport { Issue, RepositoryAccessLevel } from '@gitlens/git/models/issue.js';\nimport type {\n\tPullRequestMember,\n\tPullRequestProjection,\n\tPullRequestStackInfo,\n\tPullRequestState,\n} from '@gitlens/git/models/pullRequest.js';\nimport {\n\tPullRequest,\n\tPullRequestMergeableState,\n\tPullRequestReviewDecision,\n\tPullRequestReviewState,\n\tPullRequestStatusCheckRollupState,\n} from '@gitlens/git/models/pullRequest.js';\nimport type { Provider } from '@gitlens/git/models/remoteProvider.js';\n\nexport interface GitHubBlame {\n\tranges: GitHubBlameRange[];\n\tviewer?: string;\n}\n\nexport interface GitHubBlameRange {\n\tstartingLine: number;\n\tendingLine: number;\n\tcommit: GitHubCommit;\n}\n\nexport interface GitHubBranch {\n\tname: string;\n\ttarget: {\n\t\toid: string;\n\t\tauthoredDate: string;\n\t\tcommittedDate: string;\n\t};\n}\n\nexport interface GitHubCommit {\n\toid: string;\n\tparents: { nodes: { oid: string }[] };\n\tmessage: string;\n\tadditions?: number | undefined;\n\tchangedFiles?: number | undefined;\n\tdeletions?: number | undefined;\n\tauthor: { avatarUrl: string | undefined; date: string; email: string | undefined; name: string };\n\tcommitter: { date: string; email: string | undefined; name: string };\n\n\tfiles?: Endpoints['GET /repos/{owner}/{repo}/commits/{ref}']['response']['data']['files'];\n}\n\nexport interface GitHubCommitRef {\n\toid: string;\n}\n\nexport type GitHubContributor = Endpoints['GET /repos/{owner}/{repo}/contributors']['response']['data'][0];\n\nexport type GitHubSshSigningKey = Endpoints['GET /users/{username}/ssh_signing_keys']['response']['data'][0];\n\nexport interface GitHubMember {\n\tlogin: string;\n\tavatarUrl: string;\n\turl: string;\n}\n\nexport interface GitHubPagedResult<T> {\n\tpageInfo: GitHubPageInfo;\n\ttotalCount: number;\n\tvalues: T[];\n}\nexport interface GitHubPageInfo {\n\tstartCursor?: string | null;\n\tendCursor?: string | null;\n\thasNextPage: boolean;\n\thasPreviousPage: boolean;\n}\n\nexport interface GitHubTag {\n\tname: string;\n\ttarget: {\n\t\toid: string;\n\t\tauthoredDate?: string;\n\t\tcommittedDate?: string;\n\t\tmessage?: string | null;\n\t\ttagger?: {\n\t\t\tdate: string;\n\t\t} | null;\n\n\t\ttarget?: {\n\t\t\toid?: string;\n\t\t\tauthoredDate?: string;\n\t\t\tcommittedDate?: string;\n\t\t\tmessage?: string | null;\n\t\t};\n\t};\n}\n\nexport type GitHubCommitFileStatus = NonNullable<\n\tEndpoints['GET /repos/{owner}/{repo}/commits/{ref}']['response']['data']['files']\n>[0]['status'];\n\nexport function fromCommitFileStatus(status: GitHubCommitFileStatus): GitFileIndexStatus | undefined {\n\tswitch (status) {\n\t\tcase 'added':\n\t\t\treturn GitFileIndexStatus.Added;\n\t\tcase 'changed':\n\t\tcase 'modified':\n\t\t\treturn GitFileIndexStatus.Modified;\n\t\tcase 'removed':\n\t\t\treturn GitFileIndexStatus.Deleted;\n\t\tcase 'renamed':\n\t\t\treturn GitFileIndexStatus.Renamed;\n\t\tcase 'copied':\n\t\t\treturn GitFileIndexStatus.Copied;\n\t}\n\treturn undefined;\n}\n\nexport interface GitHubIssueOrPullRequest {\n\t__typename: 'Issue' | 'PullRequest';\n\n\tclosed: boolean;\n\tclosedAt: string | null;\n\tcreatedAt: string;\n\tid: string;\n\tnumber: number;\n\tstate: GitHubIssueOrPullRequestState;\n\ttitle: string;\n\tupdatedAt: string;\n\turl: string;\n}\n\nexport type GitHubIssueState = 'OPEN' | 'CLOSED';\nexport type GitHubPullRequestState = 'OPEN' | 'CLOSED' | 'MERGED';\nexport type GitHubIssueOrPullRequestState = GitHubIssueState | GitHubPullRequestState;\n\nexport interface GitHubPullRequestLite extends Omit<GitHubIssueOrPullRequest, '__typename'> {\n\t/** `Actor` is nullable in GitHub's schema — `null` once the author's account is deleted */\n\tauthor: GitHubMember | null;\n\tbody: string | null;\n\n\tbaseRefName: string;\n\tbaseRefOid: string;\n\n\theadRefName: string;\n\theadRefOid: string;\n\theadRepository: {\n\t\tisFork: boolean;\n\t\tname: string;\n\t\towner: {\n\t\t\tlogin: string;\n\t\t};\n\t\tsshUrl: string;\n\t\turl: string;\n\t};\n\n\tisCrossRepository: boolean;\n\tisDraft: boolean;\n\tmergedAt: string | null;\n\tpermalink: string;\n\n\trepository: {\n\t\tisFork: boolean;\n\t\tname: string;\n\t\towner: {\n\t\t\tlogin: string;\n\t\t};\n\t\tsshUrl: string;\n\t\turl: string;\n\t\tviewerPermission: GitHubViewerPermission;\n\t};\n\n\t/** Only selected against github.com — GitHub Enterprise Server schemas lag and reject the field. */\n\tstack?: GitHubPullRequestStack | null;\n\t/** Only selected against github.com — see `stack`. */\n\tstackEntry?: { position: number } | null;\n}\n\n/** GitHub's stacked-pull-request object. Read-only; all stack mutations are REST-only. */\nexport interface GitHubPullRequestStack {\n\tid: string;\n\tnumber: number;\n\tsize: number;\n\t/** The branch the bottom of the stack targets — the stack's trunk. */\n\tbaseRefName: string;\n}\n\nexport interface GitHubIssue extends Omit<GitHubIssueOrPullRequest, '__typename'> {\n\t/** `Actor` is nullable in GitHub's schema — `null` once the author's account is deleted */\n\tauthor: GitHubMember | null;\n\tassignees: { nodes: GitHubMember[] };\n\tcomments?: {\n\t\ttotalCount: number;\n\t};\n\tlabels?: { nodes: IssueLabel[] };\n\treactions?: {\n\t\ttotalCount: number;\n\t};\n\trepository: {\n\t\tname: string;\n\t\towner: {\n\t\t\tlogin: string;\n\t\t};\n\t\tviewerPermission: GitHubViewerPermission;\n\t\turl: string;\n\t};\n\tbody: string;\n}\n\nexport type GitHubPullRequestReviewDecision = 'CHANGES_REQUESTED' | 'APPROVED' | 'REVIEW_REQUIRED';\nexport type GitHubPullRequestMergeableState = 'MERGEABLE' | 'CONFLICTING' | 'UNKNOWN';\nexport type GitHubPullRequestStatusCheckRollupState = 'SUCCESS' | 'FAILURE' | 'PENDING' | 'EXPECTED' | 'ERROR';\nexport type GitHubPullRequestReviewState = 'APPROVED' | 'CHANGES_REQUESTED' | 'COMMENTED' | 'DISMISSED' | 'PENDING';\n\ntype GitHubPullRequestReview = {\n\tid: string;\n\tauthor: GitHubMember | null;\n\tstate: GitHubPullRequestReviewState;\n\tcommit?: { oid: string } | null;\n};\n\nexport interface GitHubPullRequest extends GitHubPullRequestLite {\n\tadditions: number;\n\tassignees: {\n\t\tnodes: GitHubMember[];\n\t};\n\tchangedFiles: number;\n\tchecksUrl: string;\n\tdeletions: number;\n\tmergeable: GitHubPullRequestMergeableState;\n\treviewDecision: GitHubPullRequestReviewDecision;\n\tlatestReviews: {\n\t\tnodes: GitHubPullRequestReview[];\n\t};\n\t/**\n\t * The current user's own latest review. `latestReviews` is capped, so on a heavily-reviewed pull request\n\t * the viewer's own review can fall outside that window — which is exactly the row a \"needs my review\"\n\t * surface is asking about.\n\t */\n\tviewerLatestReview: GitHubPullRequestReview | null;\n\treviewRequests: {\n\t\tnodes: {\n\t\t\tasCodeOwner: boolean;\n\t\t\t/** Empty for a team (or anything else that isn't a user), which the `... on User` selection doesn't match. */\n\t\t\trequestedReviewer: Partial<GitHubMember> | null;\n\t\t}[];\n\t};\n\tcommits: {\n\t\ttotalCount: number;\n\t\tnodes: {\n\t\t\tcommit: {\n\t\t\t\tstatusCheckRollup: {\n\t\t\t\t\tstate: 'SUCCESS' | 'FAILURE' | 'PENDING' | 'EXPECTED' | 'ERROR';\n\t\t\t\t} | null;\n\t\t\t};\n\t\t}[];\n\t};\n\ttotalCommentsCount: number;\n\tviewerCanUpdate: boolean;\n}\n\n/**\n * An input beyond a pull request's lifecycle fields that `GitHubApi.getPullRequestsEtagFieldsBatch` can select.\n * Mirrors the integrations package's `PullRequestEtagInclude`, which this package cannot import.\n */\nexport type GitHubPullRequestEtagInclude = 'mergeable' | 'reviewDecision' | 'checks';\n\n/**\n * The change state `GitHubApi.getPullRequestsEtagFieldsBatch` selects: a pull request's lifecycle fields, plus,\n * for each requested {@link GitHubPullRequestEtagInclude}, what its etag reads. Each selection is the full\n * fragment's own, so a value here is the one a full read would have mapped.\n */\nexport interface GitHubPullRequestEtagNode extends Pick<\n\tGitHubPullRequest,\n\t'id' | 'number' | 'state' | 'isDraft' | 'updatedAt' | 'headRefOid'\n> {\n\t/** Only with `mergeable`. */\n\tmergeable?: GitHubPullRequestMergeableState | null;\n\t/** Only with `reviewDecision`. `null` on a repository that requires no review. */\n\treviewDecision?: GitHubPullRequestReviewDecision | null;\n\t/** Only with `checks`. */\n\tcommits?: {\n\t\tnodes: { commit: { statusCheckRollup: { state: GitHubPullRequestStatusCheckRollupState } | null } }[];\n\t};\n}\n\n/**\n * An input beyond an issue's lifecycle fields that `GitHubApi.getIssuesEtagFieldsBatch` can select. Mirrors the\n * integrations package's `IssueEtagInclude`, which this package cannot import.\n */\nexport type GitHubIssueEtagInclude = 'reactions';\n\n/**\n * The change state `GitHubApi.getIssuesEtagFieldsBatch` selects, plus, for each requested\n * {@link GitHubIssueEtagInclude}, the full fragment's own selection of it.\n */\nexport interface GitHubIssueEtagNode extends Pick<GitHubIssue, 'id' | 'number' | 'state' | 'updatedAt'> {\n\t/** Only with `reactions`: the thumbs-up reactions, as the full fragment selects them. */\n\treactions?: { totalCount: number };\n}\n\nexport type GitHubViewerPermission =\n\t| 'ADMIN' // Can read, clone, and push to this repository. Can also manage issues, pull requests, and repository settings, including adding collaborators\n\t| 'MAINTAIN' // Can read, clone, and push to this repository. They can also manage issues, pull requests, and some repository settings\n\t| 'WRITE' // Can read, clone, and push to this repository. Can also manage issues and pull requests\n\t| 'TRIAGE' // Can read and clone this repository. Can also manage issues and pull requests\n\t| 'READ' // Can read and clone this repository. Can also open and comment on issues and pull requests\n\t| 'NONE';\n\n/** `ghost` is how github.com renders an actor whose account was deleted, under the handle `ghost` */\nfunction fromGitHubMemberOrGhost(member: GitHubMember | null | undefined): PullRequestMember {\n\tif (member == null) return { id: 'ghost', name: 'ghost', username: 'ghost' };\n\n\treturn {\n\t\tid: member.login,\n\t\tname: member.login,\n\t\tusername: member.login,\n\t\tavatarUrl: member.avatarUrl,\n\t\turl: member.url,\n\t};\n}\n\nexport function fromGitHubPullRequestLite(\n\tpr: GitHubPullRequestLite,\n\tprovider: Provider,\n\tprojection?: PullRequestProjection,\n): PullRequest {\n\treturn new PullRequest(\n\t\tprovider,\n\t\tfromGitHubMemberOrGhost(pr.author),\n\t\tString(pr.number),\n\t\tpr.id,\n\t\tpr.title,\n\t\tpr.permalink,\n\t\t{\n\t\t\towner: pr.repository.owner.login,\n\t\t\trepo: pr.repository.name,\n\t\t\taccessLevel: fromGitHubViewerPermissionToAccessLevel(pr.repository.viewerPermission),\n\t\t},\n\t\tfromGitHubIssueOrPullRequestState(pr.state),\n\t\tnew Date(pr.createdAt),\n\t\tnew Date(pr.updatedAt),\n\t\tpr.closedAt == null ? undefined : new Date(pr.closedAt),\n\t\tpr.mergedAt == null ? undefined : new Date(pr.mergedAt),\n\t\tundefined,\n\t\tundefined,\n\t\t{\n\t\t\thead: {\n\t\t\t\texists: pr.headRepository != null,\n\t\t\t\towner: pr.headRepository?.owner.login,\n\t\t\t\trepo: pr.headRepository?.name,\n\t\t\t\tsha: pr.headRefOid,\n\t\t\t\tbranch: pr.headRefName,\n\t\t\t\turl: pr.headRepository?.url,\n\t\t\t\tcloneHttps: pr.headRepository != null ? `${pr.headRepository.url}.git` : undefined,\n\t\t\t\tcloneSsh: pr.headRepository?.sshUrl,\n\t\t\t\tisFork: pr.headRepository?.isFork,\n\t\t\t},\n\t\t\tbase: {\n\t\t\t\texists: pr.repository != null,\n\t\t\t\towner: pr.repository?.owner.login,\n\t\t\t\trepo: pr.repository?.name,\n\t\t\t\tsha: pr.baseRefOid,\n\t\t\t\tbranch: pr.baseRefName,\n\t\t\t\turl: pr.repository?.url,\n\t\t\t\tcloneHttps: pr.repository != null ? `${pr.repository.url}.git` : undefined,\n\t\t\t\tcloneSsh: pr.repository?.sshUrl,\n\t\t\t\tisFork: pr.repository?.isFork,\n\t\t\t},\n\t\t\tisCrossRepository: pr.isCrossRepository,\n\t\t},\n\t\tpr.isDraft,\n\t\t// The lite fragment selects nothing between `isDraft` and `stack`.\n\t\tundefined, // additions\n\t\tundefined, // deletions\n\t\tundefined, // commentsCount\n\t\tundefined, // thumbsUpCount\n\t\tundefined, // reviewDecision\n\t\tundefined, // reviewRequests\n\t\tundefined, // latestReviews\n\t\tundefined, // assignees\n\t\tundefined, // statusCheckRollupState\n\t\tundefined, // project\n\t\tundefined, // version\n\t\tundefined, // commitCount\n\t\tfromGitHubPullRequestStack(pr),\n\t\tundefined, // filesChanged\n\t\tpr.body ?? undefined,\n\t\tpr.number,\n\t\tundefined, // authoredByMe\n\t\tprojection,\n\t);\n}\n\n/** Both fields are absent on GitHub Enterprise Server (never selected) and `null` when unstacked. */\nfunction fromGitHubPullRequestStack(pr: GitHubPullRequestLite): PullRequestStackInfo | undefined {\n\tif (pr.stack == null || pr.stackEntry == null) return undefined;\n\n\treturn {\n\t\tid: pr.stack.id,\n\t\tnumber: pr.stack.number,\n\t\tsize: pr.stack.size,\n\t\tposition: pr.stackEntry.position,\n\t\tbaseRef: pr.stack.baseRefName,\n\t};\n}\n\nexport function fromGitHubIssueOrPullRequestState(state: GitHubPullRequestState): PullRequestState {\n\treturn state === 'MERGED' ? 'merged' : state === 'CLOSED' ? 'closed' : 'opened';\n}\n\nexport function toGitHubPullRequestState(state: PullRequestState): GitHubPullRequestState {\n\treturn state === 'merged' ? 'MERGED' : state === 'closed' ? 'CLOSED' : 'OPEN';\n}\n\nexport function fromGitHubPullRequestReviewDecision(\n\treviewDecision: GitHubPullRequestReviewDecision,\n): PullRequestReviewDecision {\n\tswitch (reviewDecision) {\n\t\tcase 'APPROVED':\n\t\t\treturn PullRequestReviewDecision.Approved;\n\t\tcase 'CHANGES_REQUESTED':\n\t\t\treturn PullRequestReviewDecision.ChangesRequested;\n\t\tcase 'REVIEW_REQUIRED':\n\t\t\treturn PullRequestReviewDecision.ReviewRequired;\n\t}\n}\n\nexport function fromGitHubPullRequestReviewState(state: GitHubPullRequestReviewState): PullRequestReviewState {\n\tswitch (state) {\n\t\tcase 'APPROVED':\n\t\t\treturn PullRequestReviewState.Approved;\n\t\tcase 'CHANGES_REQUESTED':\n\t\t\treturn PullRequestReviewState.ChangesRequested;\n\t\tcase 'COMMENTED':\n\t\t\treturn PullRequestReviewState.Commented;\n\t\tcase 'DISMISSED':\n\t\t\treturn PullRequestReviewState.Dismissed;\n\t\tcase 'PENDING':\n\t\t\treturn PullRequestReviewState.Pending;\n\t}\n}\n\nexport function toGitHubPullRequestReviewDecision(\n\treviewDecision: PullRequestReviewDecision,\n): GitHubPullRequestReviewDecision {\n\tswitch (reviewDecision) {\n\t\tcase PullRequestReviewDecision.Approved:\n\t\t\treturn 'APPROVED';\n\t\tcase PullRequestReviewDecision.ChangesRequested:\n\t\t\treturn 'CHANGES_REQUESTED';\n\t\tcase PullRequestReviewDecision.ReviewRequired:\n\t\t\treturn 'REVIEW_REQUIRED';\n\t}\n}\n\nexport function fromGitHubPullRequestMergeableState(\n\tmergeableState: GitHubPullRequestMergeableState,\n): PullRequestMergeableState {\n\tswitch (mergeableState) {\n\t\tcase 'MERGEABLE':\n\t\t\treturn PullRequestMergeableState.Mergeable;\n\t\tcase 'CONFLICTING':\n\t\t\treturn PullRequestMergeableState.Conflicting;\n\t\tcase 'UNKNOWN':\n\t\t\treturn PullRequestMergeableState.Unknown;\n\t}\n}\n\nexport function toGitHubPullRequestMergeableState(\n\tmergeableState: PullRequestMergeableState,\n): GitHubPullRequestMergeableState {\n\tswitch (mergeableState) {\n\t\tcase PullRequestMergeableState.Mergeable:\n\t\t\treturn 'MERGEABLE';\n\t\tcase PullRequestMergeableState.Conflicting:\n\t\t\treturn 'CONFLICTING';\n\t\tcase PullRequestMergeableState.FailingChecks:\n\t\t\treturn 'UNKNOWN';\n\t\tcase PullRequestMergeableState.BlockedByPolicy:\n\t\t\treturn 'UNKNOWN';\n\t\tcase PullRequestMergeableState.Unknown:\n\t\t\treturn 'UNKNOWN';\n\t}\n}\n\nexport function fromGitHubPullRequestStatusCheckRollupState(\n\tstate: GitHubPullRequestStatusCheckRollupState | null | undefined,\n): PullRequestStatusCheckRollupState | undefined {\n\tswitch (state) {\n\t\tcase 'SUCCESS':\n\t\tcase 'EXPECTED':\n\t\t\treturn PullRequestStatusCheckRollupState.Success;\n\t\tcase 'FAILURE':\n\t\tcase 'ERROR':\n\t\t\treturn PullRequestStatusCheckRollupState.Failed;\n\t\tcase 'PENDING':\n\t\t\treturn PullRequestStatusCheckRollupState.Pending;\n\t\tdefault:\n\t\t\treturn undefined;\n\t}\n}\n\nexport function fromGitHubPullRequest(\n\tpr: GitHubPullRequest,\n\tprovider: Provider,\n\tprojection?: PullRequestProjection,\n): PullRequest {\n\t// `latestReviews` is capped, so keep the viewer's own review even when it falls outside that window, deduped\n\t// by review id since the two selections overlap. Unsubmitted drafts are dropped from the union rather than\n\t// from the viewer's side alone: `PENDING` is in GitHub's review-state enum on both selections, and the field\n\t// this feeds is documented as reviews already SUBMITTED — a draft there tells a \"needs my review\" consumer\n\t// the review is done, and a reviewer with a submitted review plus a draft would get two conflicting rows.\n\tconst viewerLatestReview = pr.viewerLatestReview;\n\tconst latestReviews = [\n\t\t...pr.latestReviews.nodes,\n\t\t...(viewerLatestReview != null && !pr.latestReviews.nodes.some(r => r.id === viewerLatestReview.id)\n\t\t\t? [viewerLatestReview]\n\t\t\t: []),\n\t].filter(review => review.state !== 'PENDING');\n\n\treturn new PullRequest(\n\t\tprovider,\n\t\tfromGitHubMemberOrGhost(pr.author),\n\t\tString(pr.number),\n\t\tpr.id,\n\t\tpr.title,\n\t\tpr.permalink,\n\t\t{\n\t\t\towner: pr.repository.owner.login,\n\t\t\trepo: pr.repository.name,\n\t\t\taccessLevel: fromGitHubViewerPermissionToAccessLevel(pr.repository.viewerPermission),\n\t\t},\n\t\tfromGitHubIssueOrPullRequestState(pr.state),\n\t\tnew Date(pr.createdAt),\n\t\tnew Date(pr.updatedAt),\n\t\tpr.closedAt == null ? undefined : new Date(pr.closedAt),\n\t\tpr.mergedAt == null ? undefined : new Date(pr.mergedAt),\n\t\tfromGitHubPullRequestMergeableState(pr.mergeable),\n\t\tpr.viewerCanUpdate,\n\t\t{\n\t\t\thead: {\n\t\t\t\texists: pr.headRepository != null,\n\t\t\t\towner: pr.headRepository?.owner.login,\n\t\t\t\trepo: pr.headRepository?.name,\n\t\t\t\tsha: pr.headRefOid,\n\t\t\t\tbranch: pr.headRefName,\n\t\t\t\turl: pr.headRepository?.url,\n\t\t\t\tcloneHttps: pr.headRepository != null ? `${pr.headRepository.url}.git` : undefined,\n\t\t\t\tcloneSsh: pr.headRepository?.sshUrl,\n\t\t\t\tisFork: pr.headRepository?.isFork,\n\t\t\t},\n\t\t\tbase: {\n\t\t\t\texists: pr.repository != null,\n\t\t\t\towner: pr.repository?.owner.login,\n\t\t\t\trepo: pr.repository?.name,\n\t\t\t\tsha: pr.baseRefOid,\n\t\t\t\tbranch: pr.baseRefName,\n\t\t\t\turl: pr.repository?.url,\n\t\t\t\tcloneHttps: pr.repository != null ? `${pr.repository.url}.git` : undefined,\n\t\t\t\tcloneSsh: pr.repository?.sshUrl,\n\t\t\t\tisFork: pr.repository?.isFork,\n\t\t\t},\n\t\t\tisCrossRepository: pr.isCrossRepository,\n\t\t},\n\t\tpr.isDraft,\n\t\tpr.additions,\n\t\tpr.deletions,\n\t\tpr.totalCommentsCount,\n\t\tundefined, // thumbsUpCount: the fragment selects no reactions\n\t\tfromGitHubPullRequestReviewDecision(pr.reviewDecision),\n\t\tpr.reviewRequests.nodes\n\t\t\t.map(r =>\n\t\t\t\tr.requestedReviewer != null\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tisCodeOwner: r.asCodeOwner,\n\t\t\t\t\t\t\treviewer: {\n\t\t\t\t\t\t\t\t// A team has no login: an empty id, which matches no one, rather than a missing one.\n\t\t\t\t\t\t\t\tid: r.requestedReviewer.login ?? '',\n\t\t\t\t\t\t\t\tname: r.requestedReviewer.login,\n\t\t\t\t\t\t\t\tusername: r.requestedReviewer.login,\n\t\t\t\t\t\t\t\tavatarUrl: r.requestedReviewer.avatarUrl,\n\t\t\t\t\t\t\t\turl: r.requestedReviewer.url,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstate: PullRequestReviewState.ReviewRequested,\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined,\n\t\t\t)\n\t\t\t.filter(<T>(r?: T): r is T => Boolean(r)),\n\t\tlatestReviews.map(r => ({\n\t\t\treviewer: fromGitHubMemberOrGhost(r.author),\n\t\t\tstate: fromGitHubPullRequestReviewState(r.state),\n\t\t\tcommitOid: r.commit?.oid,\n\t\t})),\n\t\tpr.assignees.nodes.map(r => ({\n\t\t\tid: r.login,\n\t\t\tname: r.login,\n\t\t\tusername: r.login,\n\t\t\tavatarUrl: r.avatarUrl,\n\t\t\turl: r.url,\n\t\t})),\n\t\tfromGitHubPullRequestStatusCheckRollupState(pr.commits.nodes?.[0]?.commit.statusCheckRollup?.state),\n\t\tundefined, // project\n\t\tundefined, // version\n\t\tpr.commits.totalCount,\n\t\tfromGitHubPullRequestStack(pr),\n\t\tpr.changedFiles,\n\t\tpr.body ?? undefined,\n\t\tpr.number,\n\t\tundefined, // authoredByMe\n\t\tprojection,\n\t);\n}\n\nexport function fromGitHubIssue(value: GitHubIssue, provider: Provider, projection?: IssueProjection): Issue {\n\treturn new Issue(\n\t\t{\n\t\t\tid: provider.id,\n\t\t\tname: provider.name,\n\t\t\tdomain: provider.domain,\n\t\t\ticon: provider.icon,\n\t\t},\n\t\tString(value.number),\n\t\tvalue.id,\n\t\tvalue.title,\n\t\tvalue.url,\n\t\tnew Date(value.createdAt),\n\t\tnew Date(value.updatedAt),\n\t\tvalue.closed,\n\t\tfromGitHubIssueOrPullRequestState(value.state),\n\t\tvalue.author == null\n\t\t\t? undefined\n\t\t\t: {\n\t\t\t\t\tid: value.author.login,\n\t\t\t\t\tname: value.author.login,\n\t\t\t\t\tusername: value.author.login,\n\t\t\t\t\tavatarUrl: value.author.avatarUrl,\n\t\t\t\t\turl: value.author.url,\n\t\t\t\t},\n\t\tvalue.assignees.nodes.map(assignee => ({\n\t\t\tid: assignee.login,\n\t\t\tname: assignee.login,\n\t\t\tusername: assignee.login,\n\t\t\tavatarUrl: assignee.avatarUrl,\n\t\t\turl: assignee.url,\n\t\t})),\n\t\t{\n\t\t\towner: value.repository.owner.login,\n\t\t\trepo: value.repository.name,\n\t\t\taccessLevel: fromGitHubViewerPermissionToAccessLevel(value.repository.viewerPermission),\n\t\t\turl: value.repository.url,\n\t\t},\n\t\tvalue.closedAt == null ? undefined : new Date(value.closedAt),\n\t\tvalue.labels?.nodes == null\n\t\t\t? undefined\n\t\t\t: value.labels.nodes.map(label => ({\n\t\t\t\t\tcolor: label.color,\n\t\t\t\t\tname: label.name,\n\t\t\t\t})),\n\t\tvalue.comments?.totalCount,\n\t\tvalue.reactions?.totalCount,\n\t\tvalue.body,\n\t\tundefined, // project\n\t\tundefined, // number\n\t\tundefined, // issueType\n\t\tundefined, // providerState\n\t\tundefined, // bodyFormat\n\t\tundefined, // iterations\n\t\tprojection,\n\t);\n}\n\nfunction fromGitHubViewerPermissionToAccessLevel(\n\tpermission: GitHubViewerPermission | null | undefined,\n): RepositoryAccessLevel {\n\tswitch (permission) {\n\t\tcase 'ADMIN':\n\t\t\treturn RepositoryAccessLevel.Admin;\n\t\tcase 'MAINTAIN':\n\t\t\treturn RepositoryAccessLevel.Maintain;\n\t\tcase 'WRITE':\n\t\t\treturn RepositoryAccessLevel.Write;\n\t\tcase 'TRIAGE':\n\t\t\treturn RepositoryAccessLevel.Triage;\n\t\tcase 'READ':\n\t\t\treturn RepositoryAccessLevel.Read;\n\t\tdefault:\n\t\t\treturn RepositoryAccessLevel.None;\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { IssueShape } from "../../git/models/issue.js";
|
|
2
|
+
import { PullRequestShape } from "../../git/models/pullRequest.js";
|
|
3
|
+
//#region ../plus/integrations/src/fieldPresence.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Whether a row's read fetched a field group.
|
|
6
|
+
*
|
|
7
|
+
* - `fetched`: the read asked for it and surfaces it, so an empty value means "none".
|
|
8
|
+
* - `not-requested`: this read didn't ask for it, or asked but doesn't surface it faithfully. Ignore the value even
|
|
9
|
+
* when one is present (some reads fill placeholders); another read may supply it.
|
|
10
|
+
* - `unavailable`: this provider or host can't supply it on this read.
|
|
11
|
+
*/
|
|
12
|
+
export type FieldPresence = 'fetched' | 'not-requested' | 'unavailable';
|
|
13
|
+
/** A group is `fetched` only when every field in it is. */
|
|
14
|
+
export type PullRequestFieldGroup =
|
|
15
|
+
/** `body`. */
|
|
16
|
+
'description' |
|
|
17
|
+
/** `latestReviews`. */
|
|
18
|
+
'reviews' |
|
|
19
|
+
/**
|
|
20
|
+
* `reviewRequests`: who is requested. Not each request's `isCodeOwner`, which only GitLens' own GitHub reads
|
|
21
|
+
* report; every other row leaves it undefined.
|
|
22
|
+
*/
|
|
23
|
+
'reviewRequests' |
|
|
24
|
+
/**
|
|
25
|
+
* `reviewDecision`. Only GitHub reports one; elsewhere it is derived from the reviewers' states on the row, which
|
|
26
|
+
* ignores the host's own approval rules, so it is never `fetched` there — derive it from `reviews` and
|
|
27
|
+
* `reviewRequests` instead.
|
|
28
|
+
*/
|
|
29
|
+
'reviewDecision' |
|
|
30
|
+
/** `assignees`. */
|
|
31
|
+
'assignees' |
|
|
32
|
+
/** `statusCheckRollupState`, on the `PullRequest` class. */
|
|
33
|
+
'checks' |
|
|
34
|
+
/** `mergeableState`. */
|
|
35
|
+
'mergeable' |
|
|
36
|
+
/** `additions`, `deletions` and `filesChanged`. */
|
|
37
|
+
'diffStats' |
|
|
38
|
+
/** `commitCount`, on the `PullRequest` class. */
|
|
39
|
+
'commitCount' |
|
|
40
|
+
/** `commentsCount`. */
|
|
41
|
+
'comments' |
|
|
42
|
+
/** `thumbsUpCount`. */
|
|
43
|
+
'reactions' |
|
|
44
|
+
/** `viewerCanUpdate`, on the `PullRequest` class, and `repository.accessLevel`. */
|
|
45
|
+
'access' |
|
|
46
|
+
/** `authoredByMe`, and the `viewer` it was matched against. */
|
|
47
|
+
'authoredByMe' |
|
|
48
|
+
/** `stack`. */
|
|
49
|
+
'stack';
|
|
50
|
+
/** A group is `fetched` only when every field in it is. */
|
|
51
|
+
export type IssueFieldGroup =
|
|
52
|
+
/** `body`. */
|
|
53
|
+
'description' |
|
|
54
|
+
/** `assignees`. */
|
|
55
|
+
'assignees' |
|
|
56
|
+
/** `labels`. */
|
|
57
|
+
'labels' |
|
|
58
|
+
/** `commentsCount`. */
|
|
59
|
+
'comments' |
|
|
60
|
+
/** `thumbsUpCount`. */
|
|
61
|
+
'reactions' |
|
|
62
|
+
/** `repository.accessLevel`. */
|
|
63
|
+
'access';
|
|
64
|
+
/**
|
|
65
|
+
* Which field groups the read that produced `pr` fetched, keyed by its provider and {@link PullRequestShape.projection}.
|
|
66
|
+
* `undefined` when either is unknown or the provider has no table yet — then nothing can be said about any field.
|
|
67
|
+
*/
|
|
68
|
+
export declare function getPullRequestFieldPresence(pr: PullRequestShape): Readonly<Record<PullRequestFieldGroup, FieldPresence>> | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* Which field groups the read that produced `issue` fetched, keyed by its provider and {@link IssueShape.projection}.
|
|
71
|
+
* `undefined` when either is unknown or the provider has no table yet — then nothing can be said about any field.
|
|
72
|
+
*/
|
|
73
|
+
export declare function getIssueFieldPresence(issue: IssueShape): Readonly<Record<IssueFieldGroup, FieldPresence>> | undefined;
|
|
74
|
+
//#endregion
|
|
75
|
+
//# sourceMappingURL=fieldPresence.d.ts.map
|