@gitkraken/core-gitlens 0.5.103 → 0.5.104
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 +19 -1
- package/dist/git/models/issue.d.ts +78 -0
- package/dist/git/models/issue.d.ts.map +1 -1
- package/dist/git/models/issue.js.map +1 -1
- package/dist/plus/git-github/api/config.d.ts +12 -0
- package/dist/plus/git-github/api/config.d.ts.map +1 -1
- package/dist/plus/git-github/api/config.js +12 -1
- package/dist/plus/git-github/api/config.js.map +1 -1
- package/dist/plus/git-github/api/github.d.ts +77 -7
- package/dist/plus/git-github/api/github.d.ts.map +1 -1
- package/dist/plus/git-github/api/github.js +241 -120
- package/dist/plus/git-github/api/github.js.map +1 -1
- package/dist/plus/git-github/api/issueSearchQuery.d.ts +70 -0
- package/dist/plus/git-github/api/issueSearchQuery.d.ts.map +1 -0
- package/dist/plus/git-github/api/issueSearchQuery.js +143 -0
- package/dist/plus/git-github/api/issueSearchQuery.js.map +1 -0
- package/dist/plus/integrations/index.d.ts +2 -0
- package/dist/plus/integrations/index.d.ts.map +1 -1
- package/dist/plus/integrations/integrationService.d.ts +39 -2
- package/dist/plus/integrations/integrationService.d.ts.map +1 -1
- package/dist/plus/integrations/integrationService.js +17 -0
- package/dist/plus/integrations/integrationService.js.map +1 -1
- package/dist/plus/integrations/manager.d.ts +88 -2
- package/dist/plus/integrations/manager.d.ts.map +1 -1
- package/dist/plus/integrations/models/gitHostIntegration.d.ts +61 -3
- package/dist/plus/integrations/models/gitHostIntegration.d.ts.map +1 -1
- package/dist/plus/integrations/models/gitHostIntegration.js +51 -0
- package/dist/plus/integrations/models/gitHostIntegration.js.map +1 -1
- package/dist/plus/integrations/models/integration.d.ts +3 -46
- 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/issueReads.d.ts +70 -0
- package/dist/plus/integrations/models/issueReads.d.ts.map +1 -0
- package/dist/plus/integrations/models/issueReads.js +2 -0
- package/dist/plus/integrations/models/issueReads.js.map +1 -0
- package/dist/plus/integrations/providerFilters.d.ts +10 -0
- package/dist/plus/integrations/providerFilters.d.ts.map +1 -1
- package/dist/plus/integrations/providers/github.d.ts +26 -3
- package/dist/plus/integrations/providers/github.d.ts.map +1 -1
- package/dist/plus/integrations/providers/github.js +34 -0
- package/dist/plus/integrations/providers/github.js.map +1 -1
- package/dist/plus/integrations/providers/models.d.ts +22 -0
- package/dist/plus/integrations/providers/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/models.js +26 -0
- package/dist/plus/integrations/providers/models.js.map +1 -1
- package/dist/plus/integrations/reads/broaden.d.ts +10 -0
- package/dist/plus/integrations/reads/broaden.d.ts.map +1 -1
- package/dist/plus/integrations/reads/broaden.js.map +1 -1
- package/dist/plus/integrations/reads/counts.d.ts +64 -0
- package/dist/plus/integrations/reads/counts.d.ts.map +1 -0
- package/dist/plus/integrations/reads/counts.js +164 -0
- package/dist/plus/integrations/reads/counts.js.map +1 -0
- package/dist/plus/integrations/reads/filters.d.ts +63 -1
- package/dist/plus/integrations/reads/filters.d.ts.map +1 -1
- package/dist/plus/integrations/reads/filters.js +125 -0
- package/dist/plus/integrations/reads/filters.js.map +1 -1
- package/dist/plus/integrations/reads/issues.d.ts.map +1 -1
- package/dist/plus/integrations/reads/issues.js +22 -41
- package/dist/plus/integrations/reads/issues.js.map +1 -1
- package/dist/plus/integrations/reads/paging.d.ts +59 -0
- package/dist/plus/integrations/reads/paging.d.ts.map +1 -1
- package/dist/plus/integrations/reads/paging.js +60 -0
- package/dist/plus/integrations/reads/paging.js.map +1 -1
- package/dist/plus/integrations/reads/searchIssues.d.ts +55 -0
- package/dist/plus/integrations/reads/searchIssues.d.ts.map +1 -0
- package/dist/plus/integrations/reads/searchIssues.js +144 -0
- package/dist/plus/integrations/reads/searchIssues.js.map +1 -0
- package/dist/plus/integrations/reads/warnings.d.ts +25 -1
- package/dist/plus/integrations/reads/warnings.d.ts.map +1 -1
- package/dist/plus/integrations/reads/warnings.js +86 -2
- package/dist/plus/integrations/reads/warnings.js.map +1 -1
- package/docs/integrations.md +110 -2
- package/docs/kepler-read-api-parity.md +57 -0
- package/package.json +1 -1
- package/src/git/models/issue.ts +81 -0
- package/src/plus/git-github/api/config.ts +13 -0
- package/src/plus/git-github/api/github.ts +332 -148
- package/src/plus/git-github/api/issueSearchQuery.ts +165 -0
- package/src/plus/integrations/index.ts +5 -0
- package/src/plus/integrations/integrationService.ts +47 -1
- package/src/plus/integrations/manager.ts +88 -2
- package/src/plus/integrations/models/gitHostIntegration.ts +102 -2
- package/src/plus/integrations/models/integration.ts +7 -46
- package/src/plus/integrations/models/issueReads.ts +73 -0
- package/src/plus/integrations/providerFilters.ts +15 -0
- package/src/plus/integrations/providers/github.ts +64 -2
- package/src/plus/integrations/providers/models.ts +49 -0
- package/src/plus/integrations/reads/broaden.ts +10 -0
- package/src/plus/integrations/reads/counts.ts +285 -0
- package/src/plus/integrations/reads/filters.ts +162 -1
- package/src/plus/integrations/reads/issues.ts +22 -45
- package/src/plus/integrations/reads/paging.ts +102 -0
- package/src/plus/integrations/reads/searchIssues.ts +252 -0
- package/src/plus/integrations/reads/warnings.ts +114 -4
|
@@ -2,11 +2,11 @@ import { mergeAssessmentInto } from '../collectionMetadata.js';
|
|
|
2
2
|
import { GitCloudHostIntegrationId, GitSelfManagedHostIntegrationId } from '../constants.js';
|
|
3
3
|
import { PagingMode, providersMetadata } from '../providers/models.js';
|
|
4
4
|
import { mergeCollectionMetadata } from '../providers/utils/providerPaging.js';
|
|
5
|
-
import {
|
|
5
|
+
import { reconcileOmissionsWithFailure } from '../results.js';
|
|
6
6
|
import { isGitHostIntegration, isIssuesHostIntegrationId, warnOnMissingSessionForDomain, } from '../utils/integration.utils.js';
|
|
7
7
|
import { runCaptured } from './drains.js';
|
|
8
8
|
import { resolveAccountWideIssueFilters } from './filters.js';
|
|
9
|
-
import { drainToRequestedPage, isPageNumberAdvanceable, pageToCursor, refusedPage, resolveContinuation, resolveCurrentPage, toProviderPageInfo, usableCursor, } from './paging.js';
|
|
9
|
+
import { drainFlatPagesToRequestedPage, drainToRequestedPage, isPageNumberAdvanceable, pageToCursor, refusedPage, resolveContinuation, resolveCurrentPage, toProviderPageInfo, usableCursor, } from './paging.js';
|
|
10
10
|
import { gitHostOnlySurfaceWarning, issuesUnsupportedWarning, otherWarning, truncationWarning, unsupportedAccountWideIssueFiltersWarning, } from './warnings.js';
|
|
11
11
|
export async function listIssuesPage(ctx, options) {
|
|
12
12
|
const page = Math.max(1, options.page ?? 1);
|
|
@@ -43,6 +43,11 @@ export async function listIssuesPage(ctx, options) {
|
|
|
43
43
|
if (options.filters?.length && options.includeAllAssignees === true) {
|
|
44
44
|
return refused(otherWarning(options.providerId, domain, options.connectionId, '`filters` and `includeAllAssignees` are contradictory for an account-wide issue read; pass only one.'));
|
|
45
45
|
}
|
|
46
|
+
// GitHub expresses "any assignee" as `assignee:*`, which is meaningless without a scope: unscoped it
|
|
47
|
+
// matches millions of issues across all of GitHub instead of the user's own world. ANY scope makes it
|
|
48
|
+
// meaningful (one repository, several, or an org) — it is specifically THIS branch, the account-wide read,
|
|
49
|
+
// that has none to offer. Scope the read to repositories (or use `searchIssuesPage`, whose criteria model
|
|
50
|
+
// takes `any-assignee` alongside a `repos`/`org` scope) rather than reading unscoped.
|
|
46
51
|
if (options.includeAllAssignees === true &&
|
|
47
52
|
(options.providerId === GitCloudHostIntegrationId.GitHub ||
|
|
48
53
|
options.providerId === GitSelfManagedHostIntegrationId.CloudGitHubEnterprise)) {
|
|
@@ -73,46 +78,22 @@ export async function listIssuesPage(ctx, options) {
|
|
|
73
78
|
project: options.project,
|
|
74
79
|
}), { warnOnMissingSession: warnOnMissingSession });
|
|
75
80
|
const first = await readAccountWidePage(options.cursor);
|
|
76
|
-
let value = first.value;
|
|
77
81
|
const warnings = first.warning != null ? [first.warning] : [];
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
let
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
value = undefined;
|
|
94
|
-
requestedPageMissing = true;
|
|
95
|
-
break;
|
|
96
|
-
}
|
|
97
|
-
value = next.value;
|
|
98
|
-
allMetadata = mergeCollectionMetadata(allMetadata, value.metadata);
|
|
99
|
-
currentTruncated = currentTruncated || value.truncated;
|
|
100
|
-
currentPage = value.page ?? currentPage + 1;
|
|
101
|
-
// A provider that hands back the same cursor isn't advancing; stop rather than loop forever.
|
|
102
|
-
if (usableCursor(value.cursor) === nextCursor) {
|
|
103
|
-
currentTruncated = true;
|
|
104
|
-
break;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
// A numbered page beyond the provider's terminal cursor is genuinely empty. Never return or
|
|
108
|
-
// relabel the last available page as the requested one.
|
|
109
|
-
if (currentPage < page) {
|
|
110
|
-
requestedPageMissing = true;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
else if (options.cursor == null && page > 1) {
|
|
114
|
-
requestedPageMissing = true;
|
|
115
|
-
}
|
|
82
|
+
// Merged across the walked pages, so a per-scope failure reported on an earlier page isn't lost by
|
|
83
|
+
// paging past it — the one thing this read accumulates that the filtered search doesn't.
|
|
84
|
+
let allMetadata = first.value?.metadata;
|
|
85
|
+
const drained = await drainFlatPagesToRequestedPage(first, {
|
|
86
|
+
requestedPage: page,
|
|
87
|
+
suppliedCursor: options.cursor,
|
|
88
|
+
warnings: warnings,
|
|
89
|
+
readPage: readAccountWidePage,
|
|
90
|
+
fold: p => {
|
|
91
|
+
allMetadata = mergeCollectionMetadata(allMetadata, p.metadata);
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
const { value, currentPage, requestedPageMissing } = drained;
|
|
95
|
+
const currentTruncated = drained.truncated;
|
|
96
|
+
const pageFetchFailed = drained.fetchFailed;
|
|
116
97
|
// GitHub, GitLab, and Azure implement an account-wide issue search; a provider that doesn't (Bitbucket
|
|
117
98
|
// exposes no issues at all, and `supportsIssues` already short-circuits it above) returns `undefined`
|
|
118
99
|
// with no error. Surface that as an explicit unsupported warning + fetchFailed rather than a silent
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../../../src/plus/integrations/reads/issues.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../../../src/plus/integrations/reads/issues.ts"],"names":[],"mappings":"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"}
|
|
@@ -103,6 +103,65 @@ export declare function resolveCurrentPage(options: {
|
|
|
103
103
|
suppliedCursor: string | undefined;
|
|
104
104
|
pageAdvanceable: boolean;
|
|
105
105
|
}): number;
|
|
106
|
+
/**
|
|
107
|
+
* One page of a FLAT cursor-paged provider read — the shape both issue reads' providers return directly.
|
|
108
|
+
*
|
|
109
|
+
* `hasMore` is optional because one of the two providers leaves it off on a terminal page; absent reads as "no
|
|
110
|
+
* more", which is what a provider that reported no continuation means.
|
|
111
|
+
*/
|
|
112
|
+
export interface FlatPage {
|
|
113
|
+
cursor?: string;
|
|
114
|
+
hasMore?: boolean;
|
|
115
|
+
page?: number;
|
|
116
|
+
truncated: boolean;
|
|
117
|
+
}
|
|
118
|
+
/** What {@link drainFlatPagesToRequestedPage} established by walking. */
|
|
119
|
+
export interface FlatDrainResult<T extends FlatPage> {
|
|
120
|
+
/** The requested page, or `undefined` when a page failed mid-walk (which also sets `fetchFailed`). */
|
|
121
|
+
value: T | undefined;
|
|
122
|
+
/** The position actually reached — 1 when nothing advanced. */
|
|
123
|
+
currentPage: number;
|
|
124
|
+
truncated: boolean;
|
|
125
|
+
/** True when the requested page is past the provider's last one, so it is genuinely EMPTY. */
|
|
126
|
+
requestedPageMissing: boolean;
|
|
127
|
+
fetchFailed: boolean;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Walks a FLAT cursor-paged read forward to a requested page number, for a provider whose pages are
|
|
131
|
+
* `{cursor, hasMore, page, truncated}` rather than the SDK's `PagedResult` wrapper.
|
|
132
|
+
*
|
|
133
|
+
* The sibling of {@link drainToRequestedPage}, not a replacement for it: that one normalizes SDK `paging` through
|
|
134
|
+
* {@link toProviderPageInfo}, which retains only cursors whose JSON declares `type`/`cursors` — and the composite
|
|
135
|
+
* cursor of a GitHub aliased search declares neither, so it would be dropped and the walk would never advance.
|
|
136
|
+
* Two shapes genuinely need two entry points; what they must NOT have is two copies of the rules below, which is
|
|
137
|
+
* what this exists to prevent (see this module's own note on drift).
|
|
138
|
+
*
|
|
139
|
+
* The rules, all of them subtle enough to be worth stating once:
|
|
140
|
+
* - The empty-cursor sentinel is filtered, so a provider claiming another page without handing back a usable
|
|
141
|
+
* continuation is not re-read with `'{}'` (which it would answer with page 1 again).
|
|
142
|
+
* - A provider that returns the SAME cursor isn't advancing: stop, and report the read as truncated rather than
|
|
143
|
+
* looping forever or publishing a short page as complete.
|
|
144
|
+
* - A page requested past the provider's terminal cursor is that EMPTY page N — never the last available page
|
|
145
|
+
* relabeled, per {@link ProviderPageInfo.currentPage}.
|
|
146
|
+
* - A page that fails mid-walk latches `fetchFailed` and leaves no value, so the caller can tell "the read broke"
|
|
147
|
+
* from "the page was genuinely empty".
|
|
148
|
+
*
|
|
149
|
+
* `fold` is the one thing the callers differ on — one merges SDK collection metadata across the walked pages, the
|
|
150
|
+
* other keeps the largest reported match count — so it is a callback rather than a branch.
|
|
151
|
+
*/
|
|
152
|
+
export declare function drainFlatPagesToRequestedPage<T extends FlatPage>(first: {
|
|
153
|
+
value?: T;
|
|
154
|
+
warning?: ProviderWarning;
|
|
155
|
+
}, options: {
|
|
156
|
+
requestedPage: number;
|
|
157
|
+
suppliedCursor: string | undefined;
|
|
158
|
+
warnings: ProviderWarning[];
|
|
159
|
+
readPage: (cursor: string) => Promise<{
|
|
160
|
+
value?: T;
|
|
161
|
+
warning?: ProviderWarning;
|
|
162
|
+
}>;
|
|
163
|
+
fold?: (page: T) => void;
|
|
164
|
+
}): Promise<FlatDrainResult<T>>;
|
|
106
165
|
/** The mutable state {@link drainToRequestedPage} carries across the pages it walks. */
|
|
107
166
|
export interface DrainState<T> {
|
|
108
167
|
items: T[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paging.d.ts","sourceRoot":"","sources":["../../../../src/plus/integrations/reads/paging.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"paging.d.ts","sourceRoot":"","sources":["../../../../src/plus/integrations/reads/paging.ts"],"names":[],"mappings":"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"}
|
|
@@ -148,6 +148,66 @@ export function resolveCurrentPage(options) {
|
|
|
148
148
|
return parsePageCursor(options.suppliedCursor) ?? options.requestedPage;
|
|
149
149
|
return options.pageAdvanceable ? options.requestedPage : 1;
|
|
150
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Walks a FLAT cursor-paged read forward to a requested page number, for a provider whose pages are
|
|
153
|
+
* `{cursor, hasMore, page, truncated}` rather than the SDK's `PagedResult` wrapper.
|
|
154
|
+
*
|
|
155
|
+
* The sibling of {@link drainToRequestedPage}, not a replacement for it: that one normalizes SDK `paging` through
|
|
156
|
+
* {@link toProviderPageInfo}, which retains only cursors whose JSON declares `type`/`cursors` — and the composite
|
|
157
|
+
* cursor of a GitHub aliased search declares neither, so it would be dropped and the walk would never advance.
|
|
158
|
+
* Two shapes genuinely need two entry points; what they must NOT have is two copies of the rules below, which is
|
|
159
|
+
* what this exists to prevent (see this module's own note on drift).
|
|
160
|
+
*
|
|
161
|
+
* The rules, all of them subtle enough to be worth stating once:
|
|
162
|
+
* - The empty-cursor sentinel is filtered, so a provider claiming another page without handing back a usable
|
|
163
|
+
* continuation is not re-read with `'{}'` (which it would answer with page 1 again).
|
|
164
|
+
* - A provider that returns the SAME cursor isn't advancing: stop, and report the read as truncated rather than
|
|
165
|
+
* looping forever or publishing a short page as complete.
|
|
166
|
+
* - A page requested past the provider's terminal cursor is that EMPTY page N — never the last available page
|
|
167
|
+
* relabeled, per {@link ProviderPageInfo.currentPage}.
|
|
168
|
+
* - A page that fails mid-walk latches `fetchFailed` and leaves no value, so the caller can tell "the read broke"
|
|
169
|
+
* from "the page was genuinely empty".
|
|
170
|
+
*
|
|
171
|
+
* `fold` is the one thing the callers differ on — one merges SDK collection metadata across the walked pages, the
|
|
172
|
+
* other keeps the largest reported match count — so it is a callback rather than a branch.
|
|
173
|
+
*/
|
|
174
|
+
export async function drainFlatPagesToRequestedPage(first, options) {
|
|
175
|
+
let value = first.value;
|
|
176
|
+
let fetchFailed = first.warning != null && value == null;
|
|
177
|
+
let currentPage = value?.page ?? 1;
|
|
178
|
+
let truncated = value?.truncated ?? false;
|
|
179
|
+
const walkable = options.suppliedCursor == null && options.requestedPage > 1;
|
|
180
|
+
if (walkable && value != null) {
|
|
181
|
+
for (let nextCursor = usableCursor(value.cursor); currentPage < options.requestedPage && value.hasMore === true && nextCursor != null; nextCursor = usableCursor(value.cursor)) {
|
|
182
|
+
const next = await options.readPage(nextCursor);
|
|
183
|
+
if (next.warning != null) {
|
|
184
|
+
appendDedupedWarning(options.warnings, next.warning);
|
|
185
|
+
}
|
|
186
|
+
if (next.value == null) {
|
|
187
|
+
fetchFailed = next.warning != null;
|
|
188
|
+
value = undefined;
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
value = next.value;
|
|
192
|
+
truncated = truncated || value.truncated;
|
|
193
|
+
options.fold?.(value);
|
|
194
|
+
currentPage = value.page ?? currentPage + 1;
|
|
195
|
+
if (usableCursor(value.cursor) === nextCursor) {
|
|
196
|
+
truncated = true;
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return {
|
|
202
|
+
value: value,
|
|
203
|
+
currentPage: currentPage,
|
|
204
|
+
truncated: truncated,
|
|
205
|
+
// Every case reduces to "a page was asked for by number and the walk fell short", including the one where
|
|
206
|
+
// no walk ran at all because the first page was already terminal.
|
|
207
|
+
requestedPageMissing: walkable && currentPage < options.requestedPage,
|
|
208
|
+
fetchFailed: fetchFailed,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
151
211
|
/**
|
|
152
212
|
* Advances a cursor-only read to the requested page when the caller supplied only `page`.
|
|
153
213
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paging.js","sourceRoot":"","sources":["../../../../src/plus/integrations/reads/paging.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"paging.js","sourceRoot":"","sources":["../../../../src/plus/integrations/reads/paging.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { IssueSearchCriteria, IssueShape } from '../../../git/models/issue.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
|
+
* The FILTERED issue search: issues matching structured criteria over a repository/org scope, with no forced
|
|
8
|
+
* relationship to the current user.
|
|
9
|
+
*
|
|
10
|
+
* A sibling of `listIssuesPage` rather than a mode of it, deliberately. That read is already two divergent
|
|
11
|
+
* branches (a cursor-composite account-wide path and a page-draining repo-scoped one) around a documented
|
|
12
|
+
* contract where `filters` REPLACES the provider's definition of "my issues". This search answers a different
|
|
13
|
+
* question — its relationships include two that are not about the user at all — and routes around the SDK's
|
|
14
|
+
* repo-scoped read entirely, whose over-limit recovery walk can spend up to 128 requests and still return an
|
|
15
|
+
* incomplete set. Folding the two together would multiply that branch matrix and put every existing consumer of
|
|
16
|
+
* `listIssuesPage` at risk; keeping them siblings shares the primitives below without sharing the branch space,
|
|
17
|
+
* for the same reason `broaden.ts`, `sweeps.ts` and `issueTracker.ts` are separate files.
|
|
18
|
+
*
|
|
19
|
+
* Contract details worth knowing before calling:
|
|
20
|
+
* - Ordering is ALWAYS most-recently-updated-first. Not an option: a "show the N most recent" policy at the
|
|
21
|
+
* provider's result ceiling is only correct under a guaranteed order.
|
|
22
|
+
* - Paging is cursor-only. `page` alone walks 1..N internally (O(N) requests); a page past the last one is an
|
|
23
|
+
* empty page N, never page N−1 relabeled.
|
|
24
|
+
* - At the provider's result ceiling the read SUCCEEDS and reports an omission carrying the total match count,
|
|
25
|
+
* so a consumer can say how many were withheld. It never falls back to a per-repository recovery walk.
|
|
26
|
+
*/
|
|
27
|
+
export declare function searchIssuesPage(ctx: ProviderReadContext, options: {
|
|
28
|
+
providerId: IntegrationIds;
|
|
29
|
+
/** Repositories to search. Combines with `org`; both become scope constraints on the same query. */
|
|
30
|
+
repos?: ProviderReposInput;
|
|
31
|
+
/** Organization/account to search. Combines with `repos`. */
|
|
32
|
+
org?: string;
|
|
33
|
+
/**
|
|
34
|
+
* What to narrow on, validated against `getSupportedFilters().issueSearch` before the read runs. A
|
|
35
|
+
* criterion the provider can't express server-side refuses the whole read (warning + `fetchFailed`)
|
|
36
|
+
* rather than serving a list that was never narrowed.
|
|
37
|
+
*/
|
|
38
|
+
criteria?: IssueSearchCriteria;
|
|
39
|
+
page?: number;
|
|
40
|
+
cursor?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Page size PER RELATIONSHIP: each one is its own provider query, so a page of an N-relationship search
|
|
43
|
+
* returns up to `N × itemsPerPage` items before the url dedupe, and fewer where they overlap.
|
|
44
|
+
* `page.itemsPerPage` reports what actually came back.
|
|
45
|
+
*/
|
|
46
|
+
itemsPerPage?: number;
|
|
47
|
+
forceSync?: boolean;
|
|
48
|
+
connectionId?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Explicit self-managed host domain. Used only when the requested connection has no configured domain;
|
|
51
|
+
* it must come from the trusted authentication configuration, not repository or remote data.
|
|
52
|
+
*/
|
|
53
|
+
domain?: string;
|
|
54
|
+
}): Promise<ProviderPagedResult<IssueShape>>;
|
|
55
|
+
//# sourceMappingURL=searchIssues.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searchIssues.d.ts","sourceRoot":"","sources":["../../../../src/plus/integrations/reads/searchIssues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AACpF,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;AAmBxD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,gBAAgB,CACrC,GAAG,EAAE,mBAAmB,EACxB,OAAO,EAAE;IACR,UAAU,EAAE,cAAc,CAAC;IAC3B,oGAAoG;IACpG,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,6DAA6D;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,GACC,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CA4K1C"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { isGitHostIntegration, isIssuesHostIntegrationId, warnOnMissingSessionForDomain, } from '../utils/integration.utils.js';
|
|
2
|
+
import { runCaptured } from './drains.js';
|
|
3
|
+
import { resolveIssueSearchCriteria, resolveIssueSearchScope } from './filters.js';
|
|
4
|
+
import { drainFlatPagesToRequestedPage, refusedPage, resolveContinuation, resolveCurrentPage, usableCursor, } from './paging.js';
|
|
5
|
+
import { gitHostOnlySurfaceWarning, issueSearchCapResultWarning, issuesUnsupportedWarning, otherWarning, truncationWarning, unsupportedIssueSearchCriteriaWarning, } from './warnings.js';
|
|
6
|
+
/**
|
|
7
|
+
* The FILTERED issue search: issues matching structured criteria over a repository/org scope, with no forced
|
|
8
|
+
* relationship to the current user.
|
|
9
|
+
*
|
|
10
|
+
* A sibling of `listIssuesPage` rather than a mode of it, deliberately. That read is already two divergent
|
|
11
|
+
* branches (a cursor-composite account-wide path and a page-draining repo-scoped one) around a documented
|
|
12
|
+
* contract where `filters` REPLACES the provider's definition of "my issues". This search answers a different
|
|
13
|
+
* question — its relationships include two that are not about the user at all — and routes around the SDK's
|
|
14
|
+
* repo-scoped read entirely, whose over-limit recovery walk can spend up to 128 requests and still return an
|
|
15
|
+
* incomplete set. Folding the two together would multiply that branch matrix and put every existing consumer of
|
|
16
|
+
* `listIssuesPage` at risk; keeping them siblings shares the primitives below without sharing the branch space,
|
|
17
|
+
* for the same reason `broaden.ts`, `sweeps.ts` and `issueTracker.ts` are separate files.
|
|
18
|
+
*
|
|
19
|
+
* Contract details worth knowing before calling:
|
|
20
|
+
* - Ordering is ALWAYS most-recently-updated-first. Not an option: a "show the N most recent" policy at the
|
|
21
|
+
* provider's result ceiling is only correct under a guaranteed order.
|
|
22
|
+
* - Paging is cursor-only. `page` alone walks 1..N internally (O(N) requests); a page past the last one is an
|
|
23
|
+
* empty page N, never page N−1 relabeled.
|
|
24
|
+
* - At the provider's result ceiling the read SUCCEEDS and reports an omission carrying the total match count,
|
|
25
|
+
* so a consumer can say how many were withheld. It never falls back to a per-repository recovery walk.
|
|
26
|
+
*/
|
|
27
|
+
export async function searchIssuesPage(ctx, options) {
|
|
28
|
+
const page = Math.max(1, Math.trunc(options.page ?? 1));
|
|
29
|
+
// Cursor-only, so a refusal can't claim the requested position — it reports page 1, per
|
|
30
|
+
// ProviderPageInfo.currentPage.
|
|
31
|
+
const refused = (warning) => refusedPage(1, [warning], true);
|
|
32
|
+
if (isIssuesHostIntegrationId(options.providerId)) {
|
|
33
|
+
return refused(gitHostOnlySurfaceWarning(options.providerId, undefined, options.connectionId, 'Filtered issue search'));
|
|
34
|
+
}
|
|
35
|
+
const integration = await ctx.getIntegrationForRead(options.providerId, options.connectionId, options.domain);
|
|
36
|
+
if (integration == null) {
|
|
37
|
+
// A supplied connection or domain that no longer resolves is a broken target, not an empty account —
|
|
38
|
+
// surface a no-connection warning + fetchFailed rather than a silent empty page.
|
|
39
|
+
const early = ctx.earlyReturnConnectionWarnings(options.providerId, options.connectionId, options.domain);
|
|
40
|
+
return refusedPage(1, early.warnings, early.fetchFailed);
|
|
41
|
+
}
|
|
42
|
+
if (!isGitHostIntegration(integration)) {
|
|
43
|
+
return refused(gitHostOnlySurfaceWarning(options.providerId, undefined, options.connectionId, 'Filtered issue search'));
|
|
44
|
+
}
|
|
45
|
+
await ctx.forceRefreshIfRequested(integration, options.forceSync, options.connectionId);
|
|
46
|
+
const domain = ctx.domainForRead(integration, options.providerId, options.connectionId, options.domain);
|
|
47
|
+
const warnOnMissingSession = warnOnMissingSessionForDomain(options.providerId, options.domain);
|
|
48
|
+
if (!integration.supportsIssues) {
|
|
49
|
+
return refused(issuesUnsupportedWarning(options.providerId, domain, options.connectionId));
|
|
50
|
+
}
|
|
51
|
+
const scope = resolveIssueSearchScope(options.repos, options.org, options.criteria);
|
|
52
|
+
switch (scope.rejection) {
|
|
53
|
+
case 'unscoped':
|
|
54
|
+
return refused(otherWarning(options.providerId, domain, options.connectionId, 'A filtered issue search must be scoped: pass `repos`, `org`, or a relationship to the current user (`authored`/`assigned`/`mentioned`). `any-assignee` and `unassigned` are not scopes — either one alone matches every such issue on the host.'));
|
|
55
|
+
case 'repo-ids':
|
|
56
|
+
// A search query names repositories by PATH, so repository ids can't be expressed as a scope. Refusing
|
|
57
|
+
// is the only honest answer: dropping them would search the whole org (or the whole host) as if the
|
|
58
|
+
// caller had asked for that.
|
|
59
|
+
return refused(otherWarning(options.providerId, domain, options.connectionId, 'A filtered issue search cannot be scoped by repository id; pass repository descriptors (namespace + name) instead.'));
|
|
60
|
+
}
|
|
61
|
+
const resolved = resolveIssueSearchCriteria(options.providerId, options.criteria);
|
|
62
|
+
if (resolved.rejection != null) {
|
|
63
|
+
return refused(unsupportedIssueSearchCriteriaWarning(options.providerId, domain, options.connectionId, resolved.rejection));
|
|
64
|
+
}
|
|
65
|
+
const readPage = (cursor) => runCaptured(options.providerId, domain, options.connectionId, () => integration.searchIssuesPageResult({
|
|
66
|
+
repos: scope.repos,
|
|
67
|
+
org: options.org,
|
|
68
|
+
criteria: options.criteria,
|
|
69
|
+
cursor: cursor,
|
|
70
|
+
pageSize: options.itemsPerPage,
|
|
71
|
+
}, undefined, options.connectionId), { warnOnMissingSession: warnOnMissingSession });
|
|
72
|
+
const first = await readPage(options.cursor);
|
|
73
|
+
const warnings = first.warning != null ? [first.warning] : [];
|
|
74
|
+
// The largest total any page reported. Folded across the walk so a cap detected on page 1 is still reportable
|
|
75
|
+
// after paging on to page N — the one thing this read accumulates that its sibling doesn't.
|
|
76
|
+
let totalCount = first.value?.totalCount;
|
|
77
|
+
const drained = await drainFlatPagesToRequestedPage(first, {
|
|
78
|
+
requestedPage: page,
|
|
79
|
+
suppliedCursor: options.cursor,
|
|
80
|
+
warnings: warnings,
|
|
81
|
+
readPage: readPage,
|
|
82
|
+
fold: p => {
|
|
83
|
+
if (p.totalCount != null) {
|
|
84
|
+
totalCount = Math.max(totalCount ?? 0, p.totalCount);
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
const { value, currentPage, requestedPageMissing } = drained;
|
|
89
|
+
const pageFetchFailed = drained.fetchFailed;
|
|
90
|
+
// A provider that doesn't implement the search hook returns `undefined` with no error. Surface that as an
|
|
91
|
+
// explicit unsupported warning + fetchFailed rather than a silent empty success, so a caller isn't left
|
|
92
|
+
// unable to tell it apart from an account with no matching issues. `getSupportedFilters().issueSearch`
|
|
93
|
+
// declares this ahead of the read, so a consumer that checks it never reaches here.
|
|
94
|
+
if (value == null && warnings.length === 0) {
|
|
95
|
+
return refused(unsupportedIssueSearchCriteriaWarning(options.providerId, domain, options.connectionId, {
|
|
96
|
+
reason: 'unsupported-search',
|
|
97
|
+
}));
|
|
98
|
+
}
|
|
99
|
+
const items = requestedPageMissing ? [] : (value?.values ?? []);
|
|
100
|
+
// Cursor-only: `hasMore` without a real cursor is a dead end, so report it as terminal-but-incomplete rather
|
|
101
|
+
// than inviting the caller to page forever.
|
|
102
|
+
const continuation = resolveContinuation({
|
|
103
|
+
hasMore: requestedPageMissing ? false : (value?.hasMore ?? false),
|
|
104
|
+
cursor: requestedPageMissing ? undefined : usableCursor(value?.cursor),
|
|
105
|
+
truncated: drained.truncated,
|
|
106
|
+
}, undefined);
|
|
107
|
+
const truncated = continuation.truncated;
|
|
108
|
+
// Only reachable when nothing else already explained the incompleteness — and a failed page always warns
|
|
109
|
+
// first, so a read that gets here SUCCEEDED. That is why the cause below is unconditionally `exhausted` and
|
|
110
|
+
// `fetchFailed` is never set from here.
|
|
111
|
+
if (truncated && warnings.length === 0) {
|
|
112
|
+
// The result ceiling is the one truncation cause this read can EXPLAIN with a number, so it gets its own
|
|
113
|
+
// warning carrying the total. Anything else truncated (an unusable continuation, a provider that stopped
|
|
114
|
+
// advancing) falls back to the generic wording.
|
|
115
|
+
warnings.push(issueSearchCapResultWarning(options.providerId, domain, options.connectionId, totalCount) ??
|
|
116
|
+
truncationWarning(options.providerId, domain, options.connectionId, 'Issue search',
|
|
117
|
+
// `exhausted`: this read exposes no budget the caller could raise, so nothing it could call
|
|
118
|
+
// would return the withheld items.
|
|
119
|
+
'exhausted'));
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
items: items,
|
|
123
|
+
warnings: warnings,
|
|
124
|
+
page: {
|
|
125
|
+
// Positional, per ProviderPageInfo.currentPage. A requested page past the terminal cursor is reported
|
|
126
|
+
// as that empty page N; otherwise this read is cursor-only, so a `page` the caller didn't pair with a
|
|
127
|
+
// cursor is never echoed.
|
|
128
|
+
currentPage: requestedPageMissing
|
|
129
|
+
? page
|
|
130
|
+
: resolveCurrentPage({
|
|
131
|
+
providerPage: currentPage,
|
|
132
|
+
requestedPage: page,
|
|
133
|
+
suppliedCursor: options.cursor,
|
|
134
|
+
pageAdvanceable: false,
|
|
135
|
+
}),
|
|
136
|
+
itemsPerPage: items.length,
|
|
137
|
+
truncated: truncated || undefined,
|
|
138
|
+
},
|
|
139
|
+
hasMore: continuation.hasMore,
|
|
140
|
+
cursor: continuation.cursor,
|
|
141
|
+
fetchFailed: pageFetchFailed || undefined,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=searchIssues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searchIssues.js","sourceRoot":"","sources":["../../../../src/plus/integrations/reads/searchIssues.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +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
5
|
/**
|
|
5
6
|
* The warnings the provider facade raises on its OWN terms, as opposed to the ones derived from a caught
|
|
6
7
|
* provider error ({@link toProviderWarning}) or from SDK collection metadata (`collectionMetadata.ts`).
|
|
@@ -67,7 +68,7 @@ export declare function incompleteReadWarning(id: IntegrationIds, domain: string
|
|
|
67
68
|
* Deliberately not exported: every caller passes a literal, and publishing it would invite a consumer to switch
|
|
68
69
|
* on a set that exists only to word a message.
|
|
69
70
|
*/
|
|
70
|
-
type TruncatedReadKind = 'Pull request' | 'Issue' | 'Repository' | 'Organization' | 'Project' | 'Account-wide issue search';
|
|
71
|
+
type TruncatedReadKind = 'Pull request' | 'Issue' | 'Repository' | 'Organization' | 'Project' | 'Account-wide issue search' | 'Issue search';
|
|
71
72
|
/** {@link incompleteReadWarning} for a paged or drained read, phrased per surface. */
|
|
72
73
|
export declare function truncationWarning(id: IntegrationIds, domain: string | undefined, connectionId: string | undefined, readKind: TruncatedReadKind,
|
|
73
74
|
/**
|
|
@@ -82,6 +83,29 @@ export declare function unsupportedAccountWideIssueFiltersWarning(id: Integratio
|
|
|
82
83
|
export declare function unsupportedAccountWidePullRequestFiltersWarning(id: IntegrationIds, domain: string | undefined, connectionId: string | undefined, filters: PullRequestFilter[]): ProviderWarning;
|
|
83
84
|
/** Warning for a repo-scoped PR read whose requested filters the provider supports none of. */
|
|
84
85
|
export declare function unsupportedFiltersWarning(id: IntegrationIds, domain: string | undefined, connectionId: string | undefined): ProviderWarning;
|
|
86
|
+
/**
|
|
87
|
+
* Warning for a filtered issue search whose criteria the provider can't serve — either it has no such search at
|
|
88
|
+
* all, or it can't express what was asked for, or the set contradicts itself.
|
|
89
|
+
*
|
|
90
|
+
* One builder for all three because they are one decision from the caller's side ("this search can't be run as
|
|
91
|
+
* asked") and the remedy differs only in what the message says. The rejection shape carries which case it is, so
|
|
92
|
+
* the wording can't drift from the check that produced it (see {@link resolveIssueSearchCriteria}).
|
|
93
|
+
*/
|
|
94
|
+
export declare function unsupportedIssueSearchCriteriaWarning(id: IntegrationIds, domain: string | undefined, connectionId: string | undefined, rejection: IssueSearchCriteriaRejection): ProviderWarning;
|
|
95
|
+
/**
|
|
96
|
+
* The omission for a filtered issue search that hit the provider's RESULT CEILING: more issues matched than the
|
|
97
|
+
* provider will ever serve for one query, however it is paged.
|
|
98
|
+
*
|
|
99
|
+
* Distinct from {@link truncationWarning} because this is the one incompleteness this read can quantify —
|
|
100
|
+
* `totalCount` is how many matched, `limit` how many are reachable — which is what lets a consumer say "19.240
|
|
101
|
+
* matched, showing the 1.000 most recently updated" instead of a bare "results may be incomplete". `recovery:
|
|
102
|
+
* 'none'` because the items past the ceiling are UNREACHABLE, not merely unfetched: no budget, no retry, and no
|
|
103
|
+
* cursor would return them. Narrowing the criteria is the only way through, which is a decision for the caller.
|
|
104
|
+
*
|
|
105
|
+
* Returns `undefined` when the provider declares no ceiling, so the caller falls back to the generic wording
|
|
106
|
+
* rather than reporting a limit it invented.
|
|
107
|
+
*/
|
|
108
|
+
export declare function issueSearchCapResultWarning(id: IntegrationIds, domain: string | undefined, connectionId: string | undefined, totalCount: number | undefined): ProviderWarning | undefined;
|
|
85
109
|
/** Warning for a git host that doesn't expose issues on this surface (e.g. Bitbucket, deprecated in favor of Jira). */
|
|
86
110
|
export declare function issuesUnsupportedWarning(id: IntegrationIds, domain: string | undefined, connectionId: string | undefined): ProviderWarning;
|
|
87
111
|
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,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"warnings.d.ts","sourceRoot":"","sources":["../../../../src/plus/integrations/reads/warnings.ts"],"names":[],"mappings":"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"}
|