@gitkraken/core-gitlens 0.5.104 → 0.5.106
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 +15 -1
- package/dist/git/models/pullRequest.d.ts +47 -0
- package/dist/git/models/pullRequest.d.ts.map +1 -1
- package/dist/git/models/pullRequest.js +8 -0
- package/dist/git/models/pullRequest.js.map +1 -1
- package/dist/plus/git-github/api/github.d.ts +33 -1
- package/dist/plus/git-github/api/github.d.ts.map +1 -1
- package/dist/plus/git-github/api/github.js +176 -0
- package/dist/plus/git-github/api/github.js.map +1 -1
- package/dist/plus/git-github/api/pullRequestSearchQuery.d.ts +16 -0
- package/dist/plus/git-github/api/pullRequestSearchQuery.d.ts.map +1 -0
- package/dist/plus/git-github/api/pullRequestSearchQuery.js +64 -0
- package/dist/plus/git-github/api/pullRequestSearchQuery.js.map +1 -0
- package/dist/plus/integrations/authentication/configuredIntegrationService.d.ts +1 -0
- package/dist/plus/integrations/authentication/configuredIntegrationService.d.ts.map +1 -1
- package/dist/plus/integrations/authentication/configuredIntegrationService.js +4 -1
- package/dist/plus/integrations/authentication/configuredIntegrationService.js.map +1 -1
- package/dist/plus/integrations/index.d.ts +1 -0
- package/dist/plus/integrations/index.d.ts.map +1 -1
- package/dist/plus/integrations/integrationService.d.ts +16 -2
- package/dist/plus/integrations/integrationService.d.ts.map +1 -1
- package/dist/plus/integrations/integrationService.js +34 -23
- package/dist/plus/integrations/integrationService.js.map +1 -1
- package/dist/plus/integrations/manager.d.ts +46 -4
- package/dist/plus/integrations/manager.d.ts.map +1 -1
- package/dist/plus/integrations/models/gitHostIntegration.d.ts +22 -2
- package/dist/plus/integrations/models/gitHostIntegration.d.ts.map +1 -1
- package/dist/plus/integrations/models/gitHostIntegration.js +21 -0
- package/dist/plus/integrations/models/gitHostIntegration.js.map +1 -1
- package/dist/plus/integrations/models/integration.d.ts +2 -1
- package/dist/plus/integrations/models/integration.d.ts.map +1 -1
- package/dist/plus/integrations/models/integration.js.map +1 -1
- package/dist/plus/integrations/models/pullRequestReads.d.ts +18 -0
- package/dist/plus/integrations/models/pullRequestReads.d.ts.map +1 -0
- package/dist/plus/integrations/models/pullRequestReads.js +2 -0
- package/dist/plus/integrations/models/pullRequestReads.js.map +1 -0
- package/dist/plus/integrations/providerFilters.d.ts +7 -6
- package/dist/plus/integrations/providerFilters.d.ts.map +1 -1
- package/dist/plus/integrations/providerFilters.js +1 -7
- package/dist/plus/integrations/providerFilters.js.map +1 -1
- package/dist/plus/integrations/providers/github.d.ts +14 -2
- package/dist/plus/integrations/providers/github.d.ts.map +1 -1
- package/dist/plus/integrations/providers/github.js +15 -0
- package/dist/plus/integrations/providers/github.js.map +1 -1
- package/dist/plus/integrations/providers/models.d.ts +12 -2
- package/dist/plus/integrations/providers/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/models.js +18 -0
- package/dist/plus/integrations/providers/models.js.map +1 -1
- package/dist/plus/integrations/reads/context.d.ts +1 -1
- package/dist/plus/integrations/reads/filters.d.ts +34 -1
- package/dist/plus/integrations/reads/filters.d.ts.map +1 -1
- package/dist/plus/integrations/reads/filters.js +73 -0
- package/dist/plus/integrations/reads/filters.js.map +1 -1
- package/dist/plus/integrations/reads/searchPullRequests.d.ts +26 -0
- package/dist/plus/integrations/reads/searchPullRequests.d.ts.map +1 -0
- package/dist/plus/integrations/reads/searchPullRequests.js +108 -0
- package/dist/plus/integrations/reads/searchPullRequests.js.map +1 -0
- package/dist/plus/integrations/reads/warnings.d.ts +6 -2
- package/dist/plus/integrations/reads/warnings.d.ts.map +1 -1
- package/dist/plus/integrations/reads/warnings.js +40 -0
- package/dist/plus/integrations/reads/warnings.js.map +1 -1
- package/docs/integrations.md +53 -4
- package/package.json +1 -1
- package/src/git/models/pullRequest.ts +50 -0
- package/src/plus/git-github/api/github.ts +254 -1
- package/src/plus/git-github/api/pullRequestSearchQuery.ts +80 -0
- package/src/plus/integrations/authentication/configuredIntegrationService.ts +6 -1
- package/src/plus/integrations/index.ts +2 -0
- package/src/plus/integrations/integrationService.ts +108 -70
- package/src/plus/integrations/manager.ts +55 -4
- package/src/plus/integrations/models/gitHostIntegration.ts +56 -2
- package/src/plus/integrations/models/integration.ts +2 -0
- package/src/plus/integrations/models/pullRequestReads.ts +18 -0
- package/src/plus/integrations/providerFilters.ts +8 -6
- package/src/plus/integrations/providers/github.ts +37 -1
- package/src/plus/integrations/providers/models.ts +37 -2
- package/src/plus/integrations/reads/context.ts +1 -1
- package/src/plus/integrations/reads/filters.ts +105 -0
- package/src/plus/integrations/reads/searchPullRequests.ts +210 -0
- package/src/plus/integrations/reads/warnings.ts +73 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IntegrationIds } from '../constants.js';
|
|
2
|
-
import type { IssueFilter, IssueSearchCapabilities, IssueSearchCriteria, PullRequestFilter } from '../providerFilters.js';
|
|
2
|
+
import type { IssueFilter, IssueSearchCapabilities, IssueSearchCriteria, PullRequestFilter, PullRequestSearchCapabilities, PullRequestSearchCriteria } from '../providerFilters.js';
|
|
3
3
|
import type { ProviderRepoInput, ProviderReposInput } from '../providers/models.js';
|
|
4
4
|
/**
|
|
5
5
|
* Validation of a caller-supplied relationship filter set against what a provider can express server-side.
|
|
@@ -34,6 +34,35 @@ export declare function resolvePullRequestFilters(id: IntegrationIds, filters: P
|
|
|
34
34
|
* unsupported member would change the requested OR set, so validation is all-or-nothing.
|
|
35
35
|
*/
|
|
36
36
|
export declare function resolveAccountWidePullRequestFilters(id: IntegrationIds, filters: PullRequestFilter[] | undefined): ResolvedFilters<PullRequestFilter>;
|
|
37
|
+
/** Why {@link resolvePullRequestSearchCriteria} refused a criteria set. */
|
|
38
|
+
export type PullRequestSearchCriteriaRejection =
|
|
39
|
+
/** The provider has no filtered pull-request search. */
|
|
40
|
+
{
|
|
41
|
+
reason: 'unsupported-search';
|
|
42
|
+
}
|
|
43
|
+
/** The provider has one, but cannot express every requested criterion server-side. */
|
|
44
|
+
| {
|
|
45
|
+
reason: 'unsupported-criteria';
|
|
46
|
+
criteria: string[];
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Validates filtered pull-request search criteria all-or-nothing. Dropping an unsupported criterion would
|
|
50
|
+
* widen the provider query while leaving its page and cursor describing the wider set, so the facade refuses the
|
|
51
|
+
* request before any upstream call instead.
|
|
52
|
+
*/
|
|
53
|
+
export declare function resolvePullRequestSearchCriteria(id: IntegrationIds, criteria: PullRequestSearchCriteria | undefined): {
|
|
54
|
+
rejection?: PullRequestSearchCriteriaRejection;
|
|
55
|
+
};
|
|
56
|
+
/** Why a filtered pull-request search's repository/organization boundary was refused. */
|
|
57
|
+
export type PullRequestSearchScopeRejection = 'unscoped' | 'repo-ids' | 'unsupported-repository-scope' | 'unsupported-organization-scope';
|
|
58
|
+
/**
|
|
59
|
+
* Validates the search boundary independently from its criteria. A current-user relationship is itself a safe
|
|
60
|
+
* account-wide boundary; without one, a repository or organization scope is mandatory.
|
|
61
|
+
*/
|
|
62
|
+
export declare function resolvePullRequestSearchScope(id: IntegrationIds, repos: ProviderReposInput | undefined, org: string | undefined, criteria: PullRequestSearchCriteria | undefined): {
|
|
63
|
+
rejection?: PullRequestSearchScopeRejection;
|
|
64
|
+
repos?: ProviderRepoInput[];
|
|
65
|
+
};
|
|
37
66
|
/**
|
|
38
67
|
* Validates a caller-provided issue filter set against what the provider's ACCOUNT-WIDE issue read can express
|
|
39
68
|
* server-side (`ProviderMetadata.supportedAccountWideIssueFilters`), which is a different — usually narrower —
|
|
@@ -128,6 +157,9 @@ export declare function resolveIssueSearchScope(repos: ProviderReposInput | unde
|
|
|
128
157
|
* rather than a list, because its criteria aren't a single kind. An empty `relationships` means the provider has
|
|
129
158
|
* no filtered issue search — hide the surface, not just its chips.
|
|
130
159
|
*
|
|
160
|
+
* `pullRequestSearch` describes the separate filtered PR search. Its table declares each criteria vocabulary
|
|
161
|
+
* plus repository/organization scope support; an empty relationship list means the search itself is absent.
|
|
162
|
+
*
|
|
131
163
|
* Note this is a CAPABILITY table — "what the provider can express" — not a recommendation. A consumer
|
|
132
164
|
* matching another tool's behavior may deliberately pass fewer filters than are listed here (or none, where an
|
|
133
165
|
* already-scoped read would only be narrowed by them). Intersecting against this table is what keeps a
|
|
@@ -136,6 +168,7 @@ export declare function resolveIssueSearchScope(repos: ProviderReposInput | unde
|
|
|
136
168
|
export declare function getSupportedFilters(providerId: IntegrationIds): {
|
|
137
169
|
pullRequests: PullRequestFilter[];
|
|
138
170
|
pullRequestsAccountWide: PullRequestFilter[];
|
|
171
|
+
pullRequestSearch: PullRequestSearchCapabilities;
|
|
139
172
|
issues: IssueFilter[];
|
|
140
173
|
issuesAccountWide: IssueFilter[];
|
|
141
174
|
issueSearch: IssueSearchCapabilities;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../../src/plus/integrations/reads/filters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EACX,WAAW,EACX,uBAAuB,EACvB,mBAAmB,EAEnB,iBAAiB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGpF;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACxC,EAAE,EAAE,cAAc,EAClB,OAAO,EAAE,iBAAiB,EAAE,GAAG,SAAS,GACtC,eAAe,CAAC,iBAAiB,CAAC,CAOpC;AAED;;;GAGG;AACH,wBAAgB,oCAAoC,CACnD,EAAE,EAAE,cAAc,EAClB,OAAO,EAAE,iBAAiB,EAAE,GAAG,SAAS,GACtC,eAAe,CAAC,iBAAiB,CAAC,CAOpC;AAED;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC7C,EAAE,EAAE,cAAc,EAClB,OAAO,EAAE,WAAW,EAAE,GAAG,SAAS,GAChC,eAAe,CAAC,WAAW,CAAC,CAO9B;AAED,iHAAiH;AACjH,MAAM,MAAM,4BAA4B;AACvC,wDAAwD;AACtD;IAAE,MAAM,EAAE,oBAAoB,CAAA;CAAE;AAClC,0EAA0E;GACxE;IAAE,MAAM,EAAE,sBAAsB,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE;AACxD,0GAA0G;GACxG;IAAE,MAAM,EAAE,6BAA6B,CAAA;CAAE,CAAC;AAE7C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CACzC,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,mBAAmB,GAAG,SAAS,GACvC;IAAE,SAAS,CAAC,EAAE,4BAA4B,CAAA;CAAE,CA4C9C;
|
|
1
|
+
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../../src/plus/integrations/reads/filters.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,60 @@ export function resolveAccountWidePullRequestFilters(id, filters) {
|
|
|
29
29
|
return { unsupported: true };
|
|
30
30
|
return { filters: [...new Set(filters)], unsupported: false };
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Validates filtered pull-request search criteria all-or-nothing. Dropping an unsupported criterion would
|
|
34
|
+
* widen the provider query while leaving its page and cursor describing the wider set, so the facade refuses the
|
|
35
|
+
* request before any upstream call instead.
|
|
36
|
+
*/
|
|
37
|
+
export function resolvePullRequestSearchCriteria(id, criteria) {
|
|
38
|
+
const supported = providersMetadata[id]?.supportedPullRequestSearch;
|
|
39
|
+
if (supported == null || supported.relationships.length === 0) {
|
|
40
|
+
return { rejection: { reason: 'unsupported-search' } };
|
|
41
|
+
}
|
|
42
|
+
if (criteria == null)
|
|
43
|
+
return {};
|
|
44
|
+
const unsupported = [];
|
|
45
|
+
for (const relationship of criteria.relationships ?? []) {
|
|
46
|
+
if (!supported.relationships.includes(relationship)) {
|
|
47
|
+
unsupported.push(`relationships:${relationship}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
for (const state of criteria.states ?? []) {
|
|
51
|
+
if (!supported.states.includes(state)) {
|
|
52
|
+
unsupported.push(`states:${state}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (criteria.text != null && criteria.text.trim().length > 0 && !supported.text) {
|
|
56
|
+
unsupported.push('text');
|
|
57
|
+
}
|
|
58
|
+
if (criteria.includeArchived === true && !supported.includeArchived) {
|
|
59
|
+
unsupported.push('includeArchived');
|
|
60
|
+
}
|
|
61
|
+
return unsupported.length > 0 ? { rejection: { reason: 'unsupported-criteria', criteria: unsupported } } : {};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Validates the search boundary independently from its criteria. A current-user relationship is itself a safe
|
|
65
|
+
* account-wide boundary; without one, a repository or organization scope is mandatory.
|
|
66
|
+
*/
|
|
67
|
+
export function resolvePullRequestSearchScope(id, repos, org, criteria) {
|
|
68
|
+
const supported = providersMetadata[id]?.supportedPullRequestSearch;
|
|
69
|
+
let resolvedRepos;
|
|
70
|
+
if (repos?.length) {
|
|
71
|
+
if (repos.some(r => typeof r === 'string' || typeof r === 'number'))
|
|
72
|
+
return { rejection: 'repo-ids' };
|
|
73
|
+
if (supported?.repositoryScope !== true)
|
|
74
|
+
return { rejection: 'unsupported-repository-scope' };
|
|
75
|
+
resolvedRepos = repos;
|
|
76
|
+
}
|
|
77
|
+
const hasOrganizationScope = org != null && org.length > 0;
|
|
78
|
+
if (hasOrganizationScope && supported?.organizationScope !== true) {
|
|
79
|
+
return { rejection: 'unsupported-organization-scope' };
|
|
80
|
+
}
|
|
81
|
+
if (resolvedRepos != null || hasOrganizationScope || (criteria?.relationships?.length ?? 0) > 0) {
|
|
82
|
+
return { repos: resolvedRepos };
|
|
83
|
+
}
|
|
84
|
+
return { rejection: 'unscoped' };
|
|
85
|
+
}
|
|
32
86
|
/**
|
|
33
87
|
* Validates a caller-provided issue filter set against what the provider's ACCOUNT-WIDE issue read can express
|
|
34
88
|
* server-side (`ProviderMetadata.supportedAccountWideIssueFilters`), which is a different — usually narrower —
|
|
@@ -126,6 +180,15 @@ const unsupportedIssueSearchCapabilities = {
|
|
|
126
180
|
withoutLinkedPullRequest: false,
|
|
127
181
|
states: false,
|
|
128
182
|
};
|
|
183
|
+
/** What a provider with no filtered pull-request search reports. */
|
|
184
|
+
const unsupportedPullRequestSearchCapabilities = {
|
|
185
|
+
relationships: [],
|
|
186
|
+
states: [],
|
|
187
|
+
text: false,
|
|
188
|
+
includeArchived: false,
|
|
189
|
+
repositoryScope: false,
|
|
190
|
+
organizationScope: false,
|
|
191
|
+
};
|
|
129
192
|
/**
|
|
130
193
|
* Validates that a filtered issue search is scoped at all, and narrows `repos` to the descriptor form the
|
|
131
194
|
* provider query needs.
|
|
@@ -180,6 +243,9 @@ export function resolveIssueSearchScope(repos, org, criteria) {
|
|
|
180
243
|
* rather than a list, because its criteria aren't a single kind. An empty `relationships` means the provider has
|
|
181
244
|
* no filtered issue search — hide the surface, not just its chips.
|
|
182
245
|
*
|
|
246
|
+
* `pullRequestSearch` describes the separate filtered PR search. Its table declares each criteria vocabulary
|
|
247
|
+
* plus repository/organization scope support; an empty relationship list means the search itself is absent.
|
|
248
|
+
*
|
|
183
249
|
* Note this is a CAPABILITY table — "what the provider can express" — not a recommendation. A consumer
|
|
184
250
|
* matching another tool's behavior may deliberately pass fewer filters than are listed here (or none, where an
|
|
185
251
|
* already-scoped read would only be narrowed by them). Intersecting against this table is what keeps a
|
|
@@ -188,9 +254,16 @@ export function resolveIssueSearchScope(repos, org, criteria) {
|
|
|
188
254
|
export function getSupportedFilters(providerId) {
|
|
189
255
|
const metadata = providersMetadata[providerId];
|
|
190
256
|
const issueSearch = metadata?.supportedIssueSearch;
|
|
257
|
+
const pullRequestSearch = metadata?.supportedPullRequestSearch;
|
|
191
258
|
return {
|
|
192
259
|
pullRequests: [...(metadata?.supportedPullRequestFilters ?? [])],
|
|
193
260
|
pullRequestsAccountWide: [...(metadata?.supportedAccountWidePullRequestFilters ?? [])],
|
|
261
|
+
pullRequestSearch: {
|
|
262
|
+
...unsupportedPullRequestSearchCapabilities,
|
|
263
|
+
...pullRequestSearch,
|
|
264
|
+
relationships: [...(pullRequestSearch?.relationships ?? [])],
|
|
265
|
+
states: [...(pullRequestSearch?.states ?? [])],
|
|
266
|
+
},
|
|
194
267
|
issues: [...(metadata?.supportedIssueFilters ?? [])],
|
|
195
268
|
issuesAccountWide: [...(metadata?.supportedAccountWideIssueFilters ?? [])],
|
|
196
269
|
// Always an object, never `undefined`: a provider WITHOUT a filtered issue search reports one whose
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../../src/plus/integrations/reads/filters.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../../src/plus/integrations/reads/filters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { PullRequestSearchCriteria, PullRequestShape } from '../../../git/models/pullRequest.js';
|
|
2
|
+
import type { IntegrationIds } from '../constants.js';
|
|
3
|
+
import type { ProviderReposInput } from '../providers/models.js';
|
|
4
|
+
import type { ProviderPagedResult } from '../results.js';
|
|
5
|
+
import type { ProviderReadContext } from './context.js';
|
|
6
|
+
/**
|
|
7
|
+
* Pull requests matching structured criteria over a repository/organization or current-user relationship scope.
|
|
8
|
+
*
|
|
9
|
+
* The read is deliberately separate from `listPullRequestsPage`: the list has provider-specific "my PRs"
|
|
10
|
+
* semantics and no text channel, while this method promises a sanitized query, most-recently-updated-first
|
|
11
|
+
* ordering, one upstream request per cursor-threaded page, and a quantified omission at the provider's result
|
|
12
|
+
* ceiling.
|
|
13
|
+
*/
|
|
14
|
+
export declare function searchPullRequestsPage(ctx: ProviderReadContext, options: {
|
|
15
|
+
providerId: IntegrationIds;
|
|
16
|
+
repos?: ProviderReposInput;
|
|
17
|
+
org?: string;
|
|
18
|
+
criteria?: PullRequestSearchCriteria;
|
|
19
|
+
page?: number;
|
|
20
|
+
cursor?: string;
|
|
21
|
+
itemsPerPage?: number;
|
|
22
|
+
forceSync?: boolean;
|
|
23
|
+
connectionId?: string;
|
|
24
|
+
domain?: string;
|
|
25
|
+
}): Promise<ProviderPagedResult<PullRequestShape>>;
|
|
26
|
+
//# sourceMappingURL=searchPullRequests.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searchPullRequests.d.ts","sourceRoot":"","sources":["../../../../src/plus/integrations/reads/searchPullRequests.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAmB,MAAM,eAAe,CAAC;AAM1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAkBxD;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC3C,GAAG,EAAE,mBAAmB,EACxB,OAAO,EAAE;IACR,UAAU,EAAE,cAAc,CAAC;IAC3B,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,GACC,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC,CAgKhD"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { isGitHostIntegration, isIssuesHostIntegrationId, warnOnMissingSessionForDomain, } from '../utils/integration.utils.js';
|
|
2
|
+
import { runCaptured } from './drains.js';
|
|
3
|
+
import { resolvePullRequestSearchCriteria, resolvePullRequestSearchScope } from './filters.js';
|
|
4
|
+
import { drainFlatPagesToRequestedPage, refusedPage, resolveContinuation, resolveCurrentPage, usableCursor, } from './paging.js';
|
|
5
|
+
import { gitHostOnlySurfaceWarning, otherWarning, pullRequestSearchCapResultWarning, truncationWarning, unsupportedPullRequestSearchCriteriaWarning, } from './warnings.js';
|
|
6
|
+
/**
|
|
7
|
+
* Pull requests matching structured criteria over a repository/organization or current-user relationship scope.
|
|
8
|
+
*
|
|
9
|
+
* The read is deliberately separate from `listPullRequestsPage`: the list has provider-specific "my PRs"
|
|
10
|
+
* semantics and no text channel, while this method promises a sanitized query, most-recently-updated-first
|
|
11
|
+
* ordering, one upstream request per cursor-threaded page, and a quantified omission at the provider's result
|
|
12
|
+
* ceiling.
|
|
13
|
+
*/
|
|
14
|
+
export async function searchPullRequestsPage(ctx, options) {
|
|
15
|
+
const page = Math.max(1, Math.trunc(options.page ?? 1));
|
|
16
|
+
const refused = (warning) => refusedPage(1, [warning], true);
|
|
17
|
+
if (isIssuesHostIntegrationId(options.providerId)) {
|
|
18
|
+
return refused(gitHostOnlySurfaceWarning(options.providerId, undefined, options.connectionId, 'Filtered pull request search'));
|
|
19
|
+
}
|
|
20
|
+
const integration = await ctx.getIntegrationForRead(options.providerId, options.connectionId, options.domain);
|
|
21
|
+
if (integration == null) {
|
|
22
|
+
const early = ctx.earlyReturnConnectionWarnings(options.providerId, options.connectionId, options.domain);
|
|
23
|
+
return refusedPage(1, early.warnings, early.fetchFailed);
|
|
24
|
+
}
|
|
25
|
+
if (!isGitHostIntegration(integration)) {
|
|
26
|
+
return refused(gitHostOnlySurfaceWarning(options.providerId, undefined, options.connectionId, 'Filtered pull request search'));
|
|
27
|
+
}
|
|
28
|
+
await ctx.forceRefreshIfRequested(integration, options.forceSync, options.connectionId);
|
|
29
|
+
const domain = ctx.domainForRead(integration, options.providerId, options.connectionId, options.domain);
|
|
30
|
+
const warnOnMissingSession = warnOnMissingSessionForDomain(options.providerId, options.domain);
|
|
31
|
+
const resolved = resolvePullRequestSearchCriteria(options.providerId, options.criteria);
|
|
32
|
+
if (resolved.rejection != null) {
|
|
33
|
+
return refused(unsupportedPullRequestSearchCriteriaWarning(options.providerId, domain, options.connectionId, resolved.rejection));
|
|
34
|
+
}
|
|
35
|
+
const scope = resolvePullRequestSearchScope(options.providerId, options.repos, options.org, options.criteria);
|
|
36
|
+
switch (scope.rejection) {
|
|
37
|
+
case 'unscoped':
|
|
38
|
+
return refused(otherWarning(options.providerId, domain, options.connectionId, 'A filtered pull request search must be scoped: pass `repos`, `org`, or at least one current-user relationship.'));
|
|
39
|
+
case 'repo-ids':
|
|
40
|
+
return refused(otherWarning(options.providerId, domain, options.connectionId, 'A filtered pull request search cannot be scoped by repository id; pass repository descriptors (namespace + name) instead.'));
|
|
41
|
+
case 'unsupported-repository-scope':
|
|
42
|
+
case 'unsupported-organization-scope':
|
|
43
|
+
return refused(unsupportedPullRequestSearchCriteriaWarning(options.providerId, domain, options.connectionId, {
|
|
44
|
+
reason: 'unsupported-criteria',
|
|
45
|
+
criteria: [
|
|
46
|
+
scope.rejection === 'unsupported-repository-scope' ? 'repositoryScope' : 'organizationScope',
|
|
47
|
+
],
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
const readPage = (cursor) => runCaptured(options.providerId, domain, options.connectionId, () => integration.searchPullRequestsPageResult({
|
|
51
|
+
repos: scope.repos,
|
|
52
|
+
org: options.org,
|
|
53
|
+
criteria: options.criteria,
|
|
54
|
+
cursor: cursor,
|
|
55
|
+
pageSize: options.itemsPerPage,
|
|
56
|
+
}, undefined, options.connectionId), { warnOnMissingSession: warnOnMissingSession });
|
|
57
|
+
const first = await readPage(options.cursor);
|
|
58
|
+
const warnings = first.warning != null ? [first.warning] : [];
|
|
59
|
+
let totalCount = first.value?.totalCount;
|
|
60
|
+
const drained = await drainFlatPagesToRequestedPage(first, {
|
|
61
|
+
requestedPage: page,
|
|
62
|
+
suppliedCursor: options.cursor,
|
|
63
|
+
warnings: warnings,
|
|
64
|
+
readPage: readPage,
|
|
65
|
+
fold: p => {
|
|
66
|
+
if (p.totalCount != null) {
|
|
67
|
+
totalCount = Math.max(totalCount ?? 0, p.totalCount);
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
const { value, currentPage, requestedPageMissing } = drained;
|
|
72
|
+
if (value == null && warnings.length === 0) {
|
|
73
|
+
return refused(unsupportedPullRequestSearchCriteriaWarning(options.providerId, domain, options.connectionId, {
|
|
74
|
+
reason: 'unsupported-search',
|
|
75
|
+
}));
|
|
76
|
+
}
|
|
77
|
+
const items = requestedPageMissing ? [] : (value?.values ?? []);
|
|
78
|
+
const continuation = resolveContinuation({
|
|
79
|
+
hasMore: requestedPageMissing ? false : (value?.hasMore ?? false),
|
|
80
|
+
cursor: requestedPageMissing ? undefined : usableCursor(value?.cursor),
|
|
81
|
+
truncated: drained.truncated,
|
|
82
|
+
}, undefined);
|
|
83
|
+
const truncated = continuation.truncated;
|
|
84
|
+
if (truncated && warnings.length === 0) {
|
|
85
|
+
warnings.push(pullRequestSearchCapResultWarning(options.providerId, domain, options.connectionId, totalCount) ??
|
|
86
|
+
truncationWarning(options.providerId, domain, options.connectionId, 'Pull request search', 'exhausted'));
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
items: items,
|
|
90
|
+
warnings: warnings,
|
|
91
|
+
page: {
|
|
92
|
+
currentPage: requestedPageMissing
|
|
93
|
+
? page
|
|
94
|
+
: resolveCurrentPage({
|
|
95
|
+
providerPage: currentPage,
|
|
96
|
+
requestedPage: page,
|
|
97
|
+
suppliedCursor: options.cursor,
|
|
98
|
+
pageAdvanceable: false,
|
|
99
|
+
}),
|
|
100
|
+
itemsPerPage: items.length,
|
|
101
|
+
truncated: truncated || undefined,
|
|
102
|
+
},
|
|
103
|
+
hasMore: continuation.hasMore,
|
|
104
|
+
cursor: continuation.cursor,
|
|
105
|
+
fetchFailed: drained.fetchFailed || undefined,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=searchPullRequests.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searchPullRequests.js","sourceRoot":"","sources":["../../../../src/plus/integrations/reads/searchPullRequests.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { IntegrationIds } from '../constants.js';
|
|
2
2
|
import type { IssueFilter, PullRequestFilter } from '../providerFilters.js';
|
|
3
3
|
import type { ProviderWarning } from '../results.js';
|
|
4
|
-
import type { IssueSearchCriteriaRejection } from './filters.js';
|
|
4
|
+
import type { IssueSearchCriteriaRejection, PullRequestSearchCriteriaRejection } from './filters.js';
|
|
5
5
|
/**
|
|
6
6
|
* The warnings the provider facade raises on its OWN terms, as opposed to the ones derived from a caught
|
|
7
7
|
* provider error ({@link toProviderWarning}) or from SDK collection metadata (`collectionMetadata.ts`).
|
|
@@ -68,7 +68,7 @@ export declare function incompleteReadWarning(id: IntegrationIds, domain: string
|
|
|
68
68
|
* Deliberately not exported: every caller passes a literal, and publishing it would invite a consumer to switch
|
|
69
69
|
* on a set that exists only to word a message.
|
|
70
70
|
*/
|
|
71
|
-
type TruncatedReadKind = 'Pull request' | 'Issue' | 'Repository' | 'Organization' | 'Project' | 'Account-wide issue search' | 'Issue search';
|
|
71
|
+
type TruncatedReadKind = 'Pull request' | 'Issue' | 'Repository' | 'Organization' | 'Project' | 'Account-wide issue search' | 'Issue search' | 'Pull request search';
|
|
72
72
|
/** {@link incompleteReadWarning} for a paged or drained read, phrased per surface. */
|
|
73
73
|
export declare function truncationWarning(id: IntegrationIds, domain: string | undefined, connectionId: string | undefined, readKind: TruncatedReadKind,
|
|
74
74
|
/**
|
|
@@ -83,6 +83,8 @@ export declare function unsupportedAccountWideIssueFiltersWarning(id: Integratio
|
|
|
83
83
|
export declare function unsupportedAccountWidePullRequestFiltersWarning(id: IntegrationIds, domain: string | undefined, connectionId: string | undefined, filters: PullRequestFilter[]): ProviderWarning;
|
|
84
84
|
/** Warning for a repo-scoped PR read whose requested filters the provider supports none of. */
|
|
85
85
|
export declare function unsupportedFiltersWarning(id: IntegrationIds, domain: string | undefined, connectionId: string | undefined): ProviderWarning;
|
|
86
|
+
/** Warning for a filtered pull-request search the provider cannot run as requested. */
|
|
87
|
+
export declare function unsupportedPullRequestSearchCriteriaWarning(id: IntegrationIds, domain: string | undefined, connectionId: string | undefined, rejection: PullRequestSearchCriteriaRejection): ProviderWarning;
|
|
86
88
|
/**
|
|
87
89
|
* Warning for a filtered issue search whose criteria the provider can't serve — either it has no such search at
|
|
88
90
|
* all, or it can't express what was asked for, or the set contradicts itself.
|
|
@@ -106,6 +108,8 @@ export declare function unsupportedIssueSearchCriteriaWarning(id: IntegrationIds
|
|
|
106
108
|
* rather than reporting a limit it invented.
|
|
107
109
|
*/
|
|
108
110
|
export declare function issueSearchCapResultWarning(id: IntegrationIds, domain: string | undefined, connectionId: string | undefined, totalCount: number | undefined): ProviderWarning | undefined;
|
|
111
|
+
/** Quantified omission for a pull-request search that exceeded the provider's reachable result window. */
|
|
112
|
+
export declare function pullRequestSearchCapResultWarning(id: IntegrationIds, domain: string | undefined, connectionId: string | undefined, totalCount: number | undefined): ProviderWarning | undefined;
|
|
109
113
|
/** Warning for a git host that doesn't expose issues on this surface (e.g. Bitbucket, deprecated in favor of Jira). */
|
|
110
114
|
export declare function issuesUnsupportedWarning(id: IntegrationIds, domain: string | undefined, connectionId: string | undefined): ProviderWarning;
|
|
111
115
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warnings.d.ts","sourceRoot":"","sources":["../../../../src/plus/integrations/reads/warnings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"warnings.d.ts","sourceRoot":"","sources":["../../../../src/plus/integrations/reads/warnings.ts"],"names":[],"mappings":"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"}
|
|
@@ -128,6 +128,31 @@ export function unsupportedAccountWidePullRequestFiltersWarning(id, domain, conn
|
|
|
128
128
|
export function unsupportedFiltersWarning(id, domain, connectionId) {
|
|
129
129
|
return otherWarning(id, domain, connectionId, `The requested pull request filters are not supported by '${id}'; skipped to avoid returning unfiltered results.`);
|
|
130
130
|
}
|
|
131
|
+
/** Warning for a filtered pull-request search the provider cannot run as requested. */
|
|
132
|
+
export function unsupportedPullRequestSearchCriteriaWarning(id, domain, connectionId, rejection) {
|
|
133
|
+
let message;
|
|
134
|
+
switch (rejection.reason) {
|
|
135
|
+
case 'unsupported-search':
|
|
136
|
+
message = `Filtered pull request search is not supported by '${id}'; use \`listPullRequestsPage\` for its own pull request reads.`;
|
|
137
|
+
break;
|
|
138
|
+
case 'unsupported-criteria': {
|
|
139
|
+
const supported = providersMetadata[id]?.supportedPullRequestSearch;
|
|
140
|
+
message = unsupportedNarrowingMessage(id, 'pull request search criteria', rejection.criteria.join(', '), supported != null ? describePullRequestSearchCapabilities(supported) : '');
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return otherWarning(id, domain, connectionId, message);
|
|
145
|
+
}
|
|
146
|
+
function describePullRequestSearchCapabilities(capabilities) {
|
|
147
|
+
return [
|
|
148
|
+
...(capabilities.relationships.length ? [`relationships:${capabilities.relationships.join('|')}`] : []),
|
|
149
|
+
...(capabilities.states.length ? [`states:${capabilities.states.join('|')}`] : []),
|
|
150
|
+
...(capabilities.text ? ['text'] : []),
|
|
151
|
+
...(capabilities.includeArchived ? ['includeArchived'] : []),
|
|
152
|
+
...(capabilities.repositoryScope ? ['repository scope'] : []),
|
|
153
|
+
...(capabilities.organizationScope ? ['organization scope'] : []),
|
|
154
|
+
].join(', ');
|
|
155
|
+
}
|
|
131
156
|
/**
|
|
132
157
|
* Warning for a filtered issue search whose criteria the provider can't serve — either it has no such search at
|
|
133
158
|
* all, or it can't express what was asked for, or the set contradicts itself.
|
|
@@ -202,6 +227,21 @@ export function issueSearchCapResultWarning(id, domain, connectionId, totalCount
|
|
|
202
227
|
},
|
|
203
228
|
};
|
|
204
229
|
}
|
|
230
|
+
/** Quantified omission for a pull-request search that exceeded the provider's reachable result window. */
|
|
231
|
+
export function pullRequestSearchCapResultWarning(id, domain, connectionId, totalCount) {
|
|
232
|
+
const limit = providersMetadata[id]?.pullRequestSearchResultLimit;
|
|
233
|
+
if (limit == null || totalCount == null || totalCount <= limit)
|
|
234
|
+
return undefined;
|
|
235
|
+
return {
|
|
236
|
+
...otherWarning(id, domain, connectionId, `Pull request search matched ${totalCount} results, but '${id}' serves at most ${limit}; narrow the search to read the rest.`),
|
|
237
|
+
omission: {
|
|
238
|
+
kind: 'provider-limit',
|
|
239
|
+
recovery: 'none',
|
|
240
|
+
limit: limit,
|
|
241
|
+
totalCount: totalCount,
|
|
242
|
+
},
|
|
243
|
+
};
|
|
244
|
+
}
|
|
205
245
|
/** Warning for a git host that doesn't expose issues on this surface (e.g. Bitbucket, deprecated in favor of Jira). */
|
|
206
246
|
export function issuesUnsupportedWarning(id, domain, connectionId) {
|
|
207
247
|
return otherWarning(id, domain, connectionId, `Issues are not supported by '${id}'; use a dedicated issue integration (e.g. Jira) instead.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warnings.js","sourceRoot":"","sources":["../../../../src/plus/integrations/reads/warnings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"warnings.js","sourceRoot":"","sources":["../../../../src/plus/integrations/reads/warnings.ts"],"names":[],"mappings":"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"}
|
package/docs/integrations.md
CHANGED
|
@@ -119,6 +119,7 @@ it with `page` + `hasMore` + `cursor?`. **No read throws for a provider-side fai
|
|
|
119
119
|
| `listProjects` | `ProviderOrganization` | The project tier: Azure DevOps, and issue-tracker projects. |
|
|
120
120
|
| `listRepos` | `ProviderRepositoryShape` | Repos of an `org`, or account-wide user-affiliated repos when `org` is omitted. |
|
|
121
121
|
| `listPullRequestsPage` | `PullRequestShape` | With `repos`: those repos' PRs. Without: the user's PRs account-wide. |
|
|
122
|
+
| `searchPullRequestsPage` | `PullRequestShape` | PRs involving the user that match structured criteria, optionally repo/org-scoped. |
|
|
122
123
|
| `listIssuesPage` | `IssueShape` | Same split, for a **git host**'s issues. |
|
|
123
124
|
| `searchIssuesPage` | `IssueShape` | Issues matching structured criteria over a repo/org scope — **no** `@me` binding. |
|
|
124
125
|
| `countIssues` | `IssueCountResult` | How many match each scope, fetching none of them. See §5.1. |
|
|
@@ -171,6 +172,43 @@ Invariants worth relying on:
|
|
|
171
172
|
set" on `page.allPages === true`, which is false for _both_ truncation and failure — unlike
|
|
172
173
|
`page.truncated`, which can be misread as a benign cap.
|
|
173
174
|
|
|
175
|
+
### The filtered pull request search
|
|
176
|
+
|
|
177
|
+
`searchPullRequestsPage` pushes free text to the provider instead of filtering the already-loaded PR page. It is
|
|
178
|
+
bounded by repository/organization or by explicit current-user relationships. Relationship and state arrays are
|
|
179
|
+
OR sets, so the same read expresses both Kepler's visible scope and its terminal `closed + merged` scope. Inputs
|
|
180
|
+
are structured and checked all-or-nothing against the provider's capability table:
|
|
181
|
+
|
|
182
|
+
```ts
|
|
183
|
+
const caps = manager.getSupportedFilters(providerId).pullRequestSearch;
|
|
184
|
+
if (caps.relationships.length === 0) return loadedRowsOnlyFallback();
|
|
185
|
+
|
|
186
|
+
const result = await manager.searchPullRequestsPage({
|
|
187
|
+
providerId: providerId,
|
|
188
|
+
repos: [{ namespace: 'gitkraken', name: 'vscode-gitlens' }],
|
|
189
|
+
criteria: {
|
|
190
|
+
text: 'graph performance',
|
|
191
|
+
relationships: [PullRequestFilter.Author, PullRequestFilter.Assignee, PullRequestFilter.ReviewRequested],
|
|
192
|
+
states: ['closed', 'merged'],
|
|
193
|
+
includeArchived: false,
|
|
194
|
+
},
|
|
195
|
+
page: page,
|
|
196
|
+
cursor: cursor,
|
|
197
|
+
});
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Omit `relationships` to search every PR in the supplied repo/org scope; without such a scope at least one
|
|
201
|
+
relationship is mandatory. This is deliberately not `involves:@me`: that GitHub shortcut excludes
|
|
202
|
+
`review-requested` but includes `commenter`, so it cannot match the adjacent visible-PR list.
|
|
203
|
+
|
|
204
|
+
The provider always orders this read most-recently-updated-first. A threaded `cursor` is exactly one upstream
|
|
205
|
+
request; GitHub puts every active relationship × state facet into aliases in that one GraphQL document. A page
|
|
206
|
+
number without a cursor walks from page 1. At GitHub's 1,000-result-per-facet ceiling, `page.truncated` is true and
|
|
207
|
+
the warning's `omission` carries `totalCount`, `limit`, and `recovery: 'none'`. `totalCount` is the largest
|
|
208
|
+
provider-reported pre-ceiling facet count, matching the per-search ceiling's unit; it is not the returned or
|
|
209
|
+
still-reachable row count. Free text is sanitized so qualifier-shaped tokens such as `org:other` are removed
|
|
210
|
+
rather than allowed to change the structured scope.
|
|
211
|
+
|
|
174
212
|
### 5.1 The filtered issue search and its count probe
|
|
175
213
|
|
|
176
214
|
`searchIssuesPage` answers "every issue in this scope matching X", which no other issue read can: the
|
|
@@ -368,6 +406,9 @@ const filters = wanted.filter(f => capability.includes(f));
|
|
|
368
406
|
|
|
369
407
|
- `pullRequests` — the repo-scoped PR read.
|
|
370
408
|
- `pullRequestsAccountWide` — the optional account-wide PR capability. Treat a missing field as empty.
|
|
409
|
+
- `pullRequestSearch` — the filtered PR search (`searchPullRequestsPage`). Always present; empty `relationships`
|
|
410
|
+
means the provider has no such search. It declares the exact `relationships` and `states`, plus `text`,
|
|
411
|
+
`includeArchived`, `repositoryScope`, and `organizationScope`.
|
|
371
412
|
- `issues` — the **repo-scoped** git-host read, **and** the issue-tracker read
|
|
372
413
|
(`listIssueTrackerIssuesPage` validates against this field).
|
|
373
414
|
- `issuesAccountWide` — the account-wide git-host read only. Usually narrower (GitLab can express
|
|
@@ -421,6 +462,7 @@ Derived from the provider models and `providersMetadata`. ✓ supported · ✗ r
|
|
|
421
462
|
| PRs, repo-scoped | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ |
|
|
422
463
|
| PRs, account-wide | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ |
|
|
423
464
|
| PR `states` account-wide | ✓ | ✓ | ✓ | ✓ | ✓ | — | — | — |
|
|
465
|
+
| `searchPullRequestsPage` | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
|
|
424
466
|
| Issues, repo-scoped | ✓ | ✓ | ✗ | ✗ | ✓ | — | — | — |
|
|
425
467
|
| Issues, account-wide | ✓ | ✓ | ✗ | ✗ | ✓ | — | — | — |
|
|
426
468
|
| `searchIssuesPage` | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
|
|
@@ -436,6 +478,10 @@ ReviewRequested`.
|
|
|
436
478
|
Account-wide PR filters: GitHub/GHE `Author, Assignee, ReviewRequested, Mention` · GitLab
|
|
437
479
|
`Author, Assignee, ReviewRequested` · Bitbucket + Bitbucket DC `Author, ReviewRequested` · Azure
|
|
438
480
|
`Author, Assignee, ReviewRequested`.
|
|
481
|
+
PR **search** capabilities (`getSupportedFilters().pullRequestSearch`): GitHub/GHE express relationships
|
|
482
|
+
`Author, Assignee, ReviewRequested, Mention`, states `open, closed, merged, all`, `text`, `includeArchived`, and
|
|
483
|
+
repository/organization scopes. Every other provider declares empty lists and false flags, so the read is refused
|
|
484
|
+
rather than returning a page that did not apply a requested criterion or scope.
|
|
439
485
|
Issue filters: GitHub/GHE + Azure + Jira `Author, Assignee, Mention` · GitLab `Author, Assignee` ·
|
|
440
486
|
Linear + Trello `Assignee` · Bitbucket family none.
|
|
441
487
|
Account-wide issue filters: GitHub/GHE `Author, Assignee, Mention` · Azure `Author, Assignee` · GitLab
|
|
@@ -454,10 +500,13 @@ free text have no equivalent on either.
|
|
|
454
500
|
|
|
455
501
|
## 9. Per-provider behavior worth designing around
|
|
456
502
|
|
|
457
|
-
- **GitHub / GHE** — cursor-only everywhere. The
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
503
|
+
- **GitHub / GHE** — cursor-only everywhere. The filtered PR search aliases each requested relationship × state
|
|
504
|
+
facet into one GraphQL request per page, dedupes facet overlap, and sorts the page most-recently-updated-first.
|
|
505
|
+
With no relationships it searches every PR in the required repo/org scope. The
|
|
506
|
+
account-wide issue read is three searches (`author:@me`, `assignee:@me`, `mentions:@me`) behind one composite
|
|
507
|
+
cursor; the filtered account-wide `listPullRequestsPage` read is one search per state × relationship facet
|
|
508
|
+
behind a composite cursor that resumes only active facets. Each search caps
|
|
509
|
+
at GitHub's own 1,000-result ceiling, surfaced as `page.truncated` — and on the filtered searches additionally
|
|
461
510
|
as an omission carrying the total match count (§5.1). The only provider with a filtered issue search today.
|
|
462
511
|
`includeAllAssignees` is refused on the **account-wide** issue read: it becomes `assignee:*`, which needs a
|
|
463
512
|
scope to mean anything (unscoped it matches millions of issues across all of GitHub) and that read has none
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gitkraken/core-gitlens",
|
|
3
3
|
"description": "GitLens core — shared Git / AI / GitHub primitives for internal GitKraken consumption",
|
|
4
|
-
"version": "0.5.
|
|
4
|
+
"version": "0.5.106",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "GitKraken",
|