@osdlc/typed-gh 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/README.md +168 -36
- package/async.ts +131 -37
- package/dist/async.d.ts +43 -15
- package/dist/async.d.ts.map +1 -1
- package/dist/async.js +92 -30
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/parse.d.ts +5 -1
- package/dist/parse.d.ts.map +1 -1
- package/dist/parse.js +48 -0
- package/dist/repo.d.ts +42 -10
- package/dist/repo.d.ts.map +1 -1
- package/dist/repo.js +76 -12
- package/dist/sync.d.ts +64 -12
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +107 -29
- package/dist/types.d.ts +37 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/verbs.d.ts +194 -41
- package/dist/verbs.d.ts.map +1 -1
- package/dist/verbs.js +482 -83
- package/index.ts +26 -3
- package/package.json +3 -3
- package/parse.ts +50 -0
- package/repo.ts +87 -13
- package/sync.ts +146 -34
- package/types.ts +40 -0
- package/verbs.ts +606 -81
package/dist/verbs.d.ts
CHANGED
|
@@ -12,16 +12,48 @@
|
|
|
12
12
|
* into an absence value.
|
|
13
13
|
*/
|
|
14
14
|
import { type CommandResult } from '@osdlc/command-seam';
|
|
15
|
-
import type { IssueRow, Label, PullRequest } from './types.ts';
|
|
15
|
+
import type { IssueRow, Label, PrSearchHit, PullRequest, Repository } from './types.ts';
|
|
16
16
|
/** One `gh` invocation: what to run, and how to read what came back. */
|
|
17
17
|
export interface GhVerb<T> {
|
|
18
18
|
argv: string[];
|
|
19
19
|
/** True for every mutation and for `prDiff` — throw on a non-zero exit instead of parsing. */
|
|
20
20
|
checked: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* True when the call only reads: it changes nothing on GitHub. Every query
|
|
23
|
+
* is read-only, and so is `prDiff`; every mutation is not. A caller that
|
|
24
|
+
* keeps an allowlist of safe calls can check this before running a verb.
|
|
25
|
+
*/
|
|
26
|
+
readOnly: boolean;
|
|
21
27
|
/** Written to the child's stdin, for a verb whose payload is too large or structured for argv. */
|
|
22
28
|
input?: string | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Variables to set on the child, for a target gh takes no flag for: `GH_HOST`
|
|
31
|
+
* on `gh search` and `gh repo list`.
|
|
32
|
+
*/
|
|
33
|
+
env?: Record<string, string> | undefined;
|
|
23
34
|
parse(result: CommandResult): T;
|
|
24
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* The repository and host a verb talks to. Both are optional: with no `repo`,
|
|
38
|
+
* gh uses the repository of the clone at the client's working directory, and
|
|
39
|
+
* with no `hostname`, gh's default host.
|
|
40
|
+
*/
|
|
41
|
+
export interface GhTarget {
|
|
42
|
+
/** `owner/name`. */
|
|
43
|
+
repo?: string | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* A GitHub host: `github.com`, a GitHub Enterprise Server host such as
|
|
46
|
+
* `github.acme.com`, or a `<tenant>.ghe.com` host. Other forges are out of
|
|
47
|
+
* reach: gh speaks only GitHub's API.
|
|
48
|
+
*/
|
|
49
|
+
hostname?: string | undefined;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Throw `RangeError` unless `target.repo` is `owner/name` and
|
|
53
|
+
* `target.hostname` is a bare host. Run by every verb that uses a target, so
|
|
54
|
+
* no text can reach gh as a flag or change the endpoint a call hits.
|
|
55
|
+
*/
|
|
56
|
+
export declare function checkTarget(target: GhTarget | undefined): void;
|
|
25
57
|
/**
|
|
26
58
|
* The cheapest useful set: enough to identify a PR and nothing more.
|
|
27
59
|
*
|
|
@@ -42,6 +74,15 @@ export declare const PR_REF_FIELDS: readonly ["number", "state", "headRefName",
|
|
|
42
74
|
export declare const PR_LIST_FIELDS: readonly ["number", "state", "title", "url", "isDraft", "baseRefName", "headRefName", "headRefOid", "isCrossRepository", "mergeable", "mergeStateStatus", "reviewDecision", "author", "labels", "mergedAt", "createdAt", "updatedAt"];
|
|
43
75
|
/** {@link PR_LIST_FIELDS} plus the heavy ones a single PR can afford. */
|
|
44
76
|
export declare const PR_VIEW_FIELDS: readonly ["number", "state", "title", "url", "isDraft", "baseRefName", "headRefName", "headRefOid", "isCrossRepository", "mergeable", "mergeStateStatus", "reviewDecision", "author", "labels", "mergedAt", "createdAt", "updatedAt", "body", "comments", "reviews", "statusCheckRollup"];
|
|
77
|
+
/**
|
|
78
|
+
* A list query's answer: the rows, and whether `limit` cut the list short.
|
|
79
|
+
* The verb asks gh for one row more than `limit`; `truncated` is true when
|
|
80
|
+
* that row came back, and `rows` holds at most `limit`.
|
|
81
|
+
*/
|
|
82
|
+
export interface ListResult<T> {
|
|
83
|
+
rows: T[];
|
|
84
|
+
truncated: boolean;
|
|
85
|
+
}
|
|
45
86
|
/** What to narrow a listing to. Every filter is optional; none means "all open". */
|
|
46
87
|
export interface PrListOptions {
|
|
47
88
|
/**
|
|
@@ -53,8 +94,10 @@ export interface PrListOptions {
|
|
|
53
94
|
/** Exact base branch filter (gh-side). */
|
|
54
95
|
base?: string | undefined;
|
|
55
96
|
/**
|
|
56
|
-
* Head branch filter
|
|
57
|
-
*
|
|
97
|
+
* Head branch filter, exact: `task/foo` does not match `task/foo-2`. Passed
|
|
98
|
+
* as gh's `--head`, and the rows are filtered again on `headRefName`. Two
|
|
99
|
+
* forks can share a branch name; ask for `headRepositoryOwner` to tell them
|
|
100
|
+
* apart.
|
|
58
101
|
*/
|
|
59
102
|
head?: string | undefined;
|
|
60
103
|
/** Raw `--search` query, for anything the flags do not cover. */
|
|
@@ -64,25 +107,32 @@ export interface PrListOptions {
|
|
|
64
107
|
/** Field subset; defaults to {@link PR_LIST_FIELDS}. */
|
|
65
108
|
fields?: readonly string[] | undefined;
|
|
66
109
|
}
|
|
67
|
-
/** `gh pr list …` — open PRs by default. */
|
|
68
|
-
export declare function prList(opts?: PrListOptions): GhVerb<PullRequest
|
|
69
|
-
/**
|
|
70
|
-
|
|
110
|
+
/** `gh pr list …` — open PRs by default. `opts.repo` overrides the target's repo. */
|
|
111
|
+
export declare function prList(opts?: PrListOptions, target?: GhTarget): GhVerb<ListResult<PullRequest> | null>;
|
|
112
|
+
/**
|
|
113
|
+
* `gh pr view <number|branch|url> --json …` — one PR, with the heavy fields
|
|
114
|
+
* by default.
|
|
115
|
+
*
|
|
116
|
+
* A branch is the PR whose head is that branch, as gh picks it. A URL names
|
|
117
|
+
* its own repository and host, so the target is not passed with one. A
|
|
118
|
+
* string that starts with `-` throws `RangeError`.
|
|
119
|
+
*/
|
|
120
|
+
export declare function prView(ref: number | string, fields?: readonly string[], target?: GhTarget): GhVerb<PullRequest | null>;
|
|
71
121
|
/**
|
|
72
|
-
* Open PRs whose head
|
|
122
|
+
* Open PRs whose head is exactly `branch`.
|
|
73
123
|
*
|
|
74
124
|
* The common shape behind "which PR is this branch?", bundling the cheap
|
|
75
|
-
* field set with a small limit.
|
|
76
|
-
*
|
|
125
|
+
* field set with a small limit. More than one row comes back only when forks
|
|
126
|
+
* share the branch name.
|
|
77
127
|
*/
|
|
78
|
-
export declare function openPrsForBranch(branch: string, limit?: number): GhVerb<PullRequest
|
|
128
|
+
export declare function openPrsForBranch(branch: string, limit?: number, target?: GhTarget): GhVerb<ListResult<PullRequest> | null>;
|
|
79
129
|
/**
|
|
80
130
|
* `gh pr view <n> --json body -q .body` — just the PR body. Null when gh
|
|
81
131
|
* failed. gh's `-q` output ends with a newline that is not part of the body,
|
|
82
132
|
* so every trailing `\r` and `\n` is trimmed (including any that were part of
|
|
83
133
|
* the body, such as the `\r\n` of a body saved with CRLF line endings).
|
|
84
134
|
*/
|
|
85
|
-
export declare function prBody(number: number): GhVerb<string | null>;
|
|
135
|
+
export declare function prBody(number: number, target?: GhTarget): GhVerb<string | null>;
|
|
86
136
|
/** One `gh api` answer: HTTP status, entity tag, and the decoded JSON body. */
|
|
87
137
|
export interface ApiResponse {
|
|
88
138
|
/** True iff gh exited 0 and the status is below 400 (2xx, or a 304 on a conditional GET). */
|
|
@@ -109,14 +159,65 @@ export interface ApiOptions {
|
|
|
109
159
|
etag?: string | null | undefined;
|
|
110
160
|
/** Pass `-i` and read status/ETag off the header block (the last one, if several). */
|
|
111
161
|
includeHeaders?: boolean | undefined;
|
|
162
|
+
/**
|
|
163
|
+
* Fetch every page (`--paginate --slurp`). `body` is then the pages joined
|
|
164
|
+
* into one array when every page is an array, else the list of pages.
|
|
165
|
+
* Cannot be combined with `etag` or `includeHeaders`: with `-i` gh prints
|
|
166
|
+
* a header block per page. `status` is synthesized, as without `-i`.
|
|
167
|
+
*/
|
|
168
|
+
paginate?: boolean | undefined;
|
|
112
169
|
}
|
|
113
170
|
/**
|
|
114
171
|
* `gh api [-i] [-H If-None-Match: …] <endpoint>` — a GET against the REST API. `{owner}` and
|
|
115
|
-
* `{repo}` placeholders in the endpoint are filled
|
|
172
|
+
* `{repo}` placeholders in the endpoint are filled from the target's repo, or by gh from the
|
|
173
|
+
* cwd's repo when the target names none.
|
|
116
174
|
* Unchecked: failure is a value (`ok: false`), so a caller can tell a 304
|
|
117
175
|
* from an outage.
|
|
118
176
|
*/
|
|
119
|
-
export declare function api(endpoint: string, opts?: ApiOptions): GhVerb<ApiResponse>;
|
|
177
|
+
export declare function api(endpoint: string, opts?: ApiOptions, target?: GhTarget): GhVerb<ApiResponse>;
|
|
178
|
+
/**
|
|
179
|
+
* A GraphQL variable: gh sends a string with `-f` and the rest with `-F`.
|
|
180
|
+
*
|
|
181
|
+
* @experimental
|
|
182
|
+
*/
|
|
183
|
+
export type GraphqlVariable = string | number | boolean | null;
|
|
184
|
+
/**
|
|
185
|
+
* Options for {@link graphql}.
|
|
186
|
+
*
|
|
187
|
+
* @experimental
|
|
188
|
+
*/
|
|
189
|
+
export interface GraphqlOptions {
|
|
190
|
+
/**
|
|
191
|
+
* Follow every page (`--paginate --slurp`). The query must take
|
|
192
|
+
* `$endCursor: String` and select `pageInfo { hasNextPage endCursor }` on
|
|
193
|
+
* the one connection it pages through; gh follows only that connection.
|
|
194
|
+
*/
|
|
195
|
+
paginate?: boolean | undefined;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* `gh api graphql -f query=… [--paginate --slurp]` — a GraphQL query.
|
|
199
|
+
*
|
|
200
|
+
* Returns each page's `data`, one entry per page (one without `paginate`),
|
|
201
|
+
* or null when the call failed, the output did not parse, or any page
|
|
202
|
+
* carries `errors` or lacks `data`: a partial answer is no answer. Read one
|
|
203
|
+
* connection across the pages with {@link nodesAt}.
|
|
204
|
+
*
|
|
205
|
+
* A string variable of exactly `{owner}` or `{repo}` is filled from the
|
|
206
|
+
* target's repo, or by gh from the clone. A mutation document throws
|
|
207
|
+
* `RangeError`: this is a read, and changes go through `raw`.
|
|
208
|
+
*
|
|
209
|
+
* @experimental
|
|
210
|
+
*/
|
|
211
|
+
export declare function graphql(query: string, variables?: Record<string, GraphqlVariable>, opts?: GraphqlOptions, target?: GhTarget): GhVerb<unknown[] | null>;
|
|
212
|
+
/**
|
|
213
|
+
* The `nodes` of one connection, joined across {@link graphql} pages: walk
|
|
214
|
+
* `path` into each page and take its `nodes` array. Null when `pages` is
|
|
215
|
+
* null, or any page lacks the path or a `nodes` array, so a page that came
|
|
216
|
+
* back short is never read as fewer rows.
|
|
217
|
+
*
|
|
218
|
+
* @experimental
|
|
219
|
+
*/
|
|
220
|
+
export declare function nodesAt(pages: unknown[] | null, path: readonly string[]): unknown[] | null;
|
|
120
221
|
/** `gh --version` — the install probe. True when `gh` runs. */
|
|
121
222
|
export declare function installed(): GhVerb<boolean>;
|
|
122
223
|
/**
|
|
@@ -127,16 +228,15 @@ export interface AuthStatus {
|
|
|
127
228
|
ok: boolean;
|
|
128
229
|
detail: string;
|
|
129
230
|
}
|
|
130
|
-
/** `gh auth status` — the credential probe. */
|
|
131
|
-
export declare function authStatus(): GhVerb<AuthStatus>;
|
|
231
|
+
/** `gh auth status [--hostname <host>]` — the credential probe, for one host when the target names it. */
|
|
232
|
+
export declare function authStatus(target?: GhTarget): GhVerb<AuthStatus>;
|
|
132
233
|
/**
|
|
133
|
-
* `gh label list --json name,color,description` — every label on the repo
|
|
134
|
-
* `limit`
|
|
135
|
-
* repository with more labels than that without saying so.
|
|
234
|
+
* `gh label list --json name,color,description` — every label on the repo,
|
|
235
|
+
* up to `limit` (default 1000; `gh`'s own default is 30).
|
|
136
236
|
*/
|
|
137
237
|
export declare function labelList(opts?: {
|
|
138
238
|
limit?: number | undefined;
|
|
139
|
-
}): GhVerb<Label
|
|
239
|
+
}, target?: GhTarget): GhVerb<ListResult<Label> | null>;
|
|
140
240
|
/** What to narrow an issue listing to. Every filter is optional. */
|
|
141
241
|
export interface IssueListOptions {
|
|
142
242
|
/** Exact label filter, applied by `gh`. */
|
|
@@ -145,9 +245,53 @@ export interface IssueListOptions {
|
|
|
145
245
|
limit?: number | undefined;
|
|
146
246
|
}
|
|
147
247
|
/** `gh issue list --json …` — open issues by default, optionally by label. */
|
|
148
|
-
export declare function issueList(opts?: IssueListOptions): GhVerb<IssueRow
|
|
248
|
+
export declare function issueList(opts?: IssueListOptions, target?: GhTarget): GhVerb<ListResult<IssueRow> | null>;
|
|
149
249
|
/** `gh issue view <n> --json …` — one issue, same field set as {@link issueList}. */
|
|
150
|
-
export declare function issueView(number: number): GhVerb<IssueRow | null>;
|
|
250
|
+
export declare function issueView(number: number, target?: GhTarget): GhVerb<IssueRow | null>;
|
|
251
|
+
/** The `gh repo list`/`view --json` fields a {@link Repository} reads. */
|
|
252
|
+
export declare const REPO_FIELDS: readonly ["nameWithOwner", "description", "defaultBranchRef", "visibility", "isArchived", "url"];
|
|
253
|
+
/** The `gh search prs --json` fields a {@link PrSearchHit} reads. */
|
|
254
|
+
export declare const SEARCH_PR_FIELDS: readonly ["number", "title", "state", "url", "isDraft", "repository", "author", "labels", "createdAt", "updatedAt", "closedAt"];
|
|
255
|
+
/** What to narrow a repository listing to. Every filter is optional. */
|
|
256
|
+
export interface RepoListOptions {
|
|
257
|
+
/** True for archived repositories only, false to leave them out; both when absent. */
|
|
258
|
+
archived?: boolean | undefined;
|
|
259
|
+
visibility?: 'public' | 'private' | 'internal' | undefined;
|
|
260
|
+
/** The most repositories to return. Defaults to 100. */
|
|
261
|
+
limit?: number | undefined;
|
|
262
|
+
/** Field subset; defaults to {@link REPO_FIELDS}. `nameWithOwner` is always asked for. */
|
|
263
|
+
fields?: readonly string[] | undefined;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* `gh repo list <owner> --json …` — an owner's repositories. The host comes
|
|
267
|
+
* from the target (`GH_HOST`); the target's repo is not used.
|
|
268
|
+
*/
|
|
269
|
+
export declare function repoList(owner: string, opts?: RepoListOptions, target?: GhTarget): GhVerb<ListResult<Repository> | null>;
|
|
270
|
+
/**
|
|
271
|
+
* `gh repo view [<[host/]owner/name>] --json …` — one repository: `repo`,
|
|
272
|
+
* else the target's repo, else the clone at the client's cwd.
|
|
273
|
+
*/
|
|
274
|
+
export declare function repoView(repo?: string | undefined, fields?: readonly string[], target?: GhTarget): GhVerb<Repository | null>;
|
|
275
|
+
/** What to narrow a pull request search to. Every filter is optional. */
|
|
276
|
+
export interface SearchPrsOptions {
|
|
277
|
+
/** Only repositories this user or organization owns. */
|
|
278
|
+
owner?: string | undefined;
|
|
279
|
+
/** Only this `owner/name` repository. */
|
|
280
|
+
repo?: string | undefined;
|
|
281
|
+
/** `merged` is `--merged`; `open` and `closed` are `--state`. */
|
|
282
|
+
state?: 'open' | 'closed' | 'merged' | undefined;
|
|
283
|
+
/** The most hits to return. Defaults to 100. */
|
|
284
|
+
limit?: number | undefined;
|
|
285
|
+
/** Field subset; defaults to {@link SEARCH_PR_FIELDS}. `number` is always asked for. */
|
|
286
|
+
fields?: readonly string[] | undefined;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* `gh search prs [flags] -- <query>` — pull requests across repositories,
|
|
290
|
+
* with GitHub's search syntax in `query` (it may start with `-`, as in
|
|
291
|
+
* `-label:bug`). The host comes from the target (`GH_HOST`); the target's
|
|
292
|
+
* repo is not used, so pass `opts.repo` or `opts.owner` to narrow.
|
|
293
|
+
*/
|
|
294
|
+
export declare function searchPrs(query: string, opts?: SearchPrsOptions, target?: GhTarget): GhVerb<ListResult<PrSearchHit> | null>;
|
|
151
295
|
/**
|
|
152
296
|
* Options for {@link createPr}. `head` is the branch to merge from and `base`
|
|
153
297
|
* the branch to merge into. `draft` opens the PR as a draft.
|
|
@@ -164,18 +308,18 @@ export interface CreatePrOptions {
|
|
|
164
308
|
* starts with `http://` or `https://`. `''` when it printed none, as
|
|
165
309
|
* {@link prComment} does. A line after the URL, such as a tip, is skipped.
|
|
166
310
|
*/
|
|
167
|
-
export declare function createPr(opts: CreatePrOptions): GhVerb<string>;
|
|
311
|
+
export declare function createPr(opts: CreatePrOptions, target?: GhTarget): GhVerb<string>;
|
|
168
312
|
/** `gh pr edit <n>` — retitle or rewrite the body. */
|
|
169
313
|
export declare function editPr(number: number, opts: {
|
|
170
314
|
title?: string | undefined;
|
|
171
315
|
body?: string | undefined;
|
|
172
|
-
}): GhVerb<void>;
|
|
316
|
+
}, target?: GhTarget): GhVerb<void>;
|
|
173
317
|
/** `gh pr edit <n> --body` — rewrite just the body. */
|
|
174
|
-
export declare function editPrBody(number: number, body: string): GhVerb<void>;
|
|
318
|
+
export declare function editPrBody(number: number, body: string, target?: GhTarget): GhVerb<void>;
|
|
175
319
|
/** `gh pr update-branch <n> [--rebase]` — bring the head up to date with its base. */
|
|
176
|
-
export declare function prUpdateBranch(number: number, style?: 'merge' | 'rebase'): GhVerb<void>;
|
|
320
|
+
export declare function prUpdateBranch(number: number, style?: 'merge' | 'rebase', target?: GhTarget): GhVerb<void>;
|
|
177
321
|
/** `gh pr ready <n> [--undo]` — mark a draft PR ready for review, or (with `draft`) convert it back to a draft. */
|
|
178
|
-
export declare function prSetDraft(number: number, draft: boolean): GhVerb<void>;
|
|
322
|
+
export declare function prSetDraft(number: number, draft: boolean, target?: GhTarget): GhVerb<void>;
|
|
179
323
|
/**
|
|
180
324
|
* `gh api -X PATCH repos/{owner}/{repo}/issues/comments/<id> -f body=…` — rewrite one
|
|
181
325
|
* conversation comment.
|
|
@@ -190,7 +334,7 @@ export declare function prSetDraft(number: number, draft: boolean): GhVerb<void>
|
|
|
190
334
|
*
|
|
191
335
|
* @experimental
|
|
192
336
|
*/
|
|
193
|
-
export declare function issueCommentEdit(commentId: string, body: string): GhVerb<void>;
|
|
337
|
+
export declare function issueCommentEdit(commentId: string, body: string, target?: GhTarget): GhVerb<void>;
|
|
194
338
|
/** How {@link prMerge} lands the commits: `squash` into one, `merge` with a merge commit, or `rebase`. */
|
|
195
339
|
export type PrMergeMethod = 'squash' | 'merge' | 'rebase';
|
|
196
340
|
/**
|
|
@@ -203,7 +347,7 @@ export type PrMergeMethod = 'squash' | 'merge' | 'rebase';
|
|
|
203
347
|
export declare function prMerge(number: number, opts: {
|
|
204
348
|
method: PrMergeMethod;
|
|
205
349
|
headSha: string;
|
|
206
|
-
}): GhVerb<void>;
|
|
350
|
+
}, target?: GhTarget): GhVerb<void>;
|
|
207
351
|
/** One review thread: whether it is resolved and who spoke last. */
|
|
208
352
|
export interface ReviewThread {
|
|
209
353
|
isResolved: boolean;
|
|
@@ -218,7 +362,7 @@ export interface ReviewThread {
|
|
|
218
362
|
* PR is clear to merge must read "could not tell" differently from "no
|
|
219
363
|
* threads".
|
|
220
364
|
*/
|
|
221
|
-
export declare function prReviewThreads(number: number): GhVerb<ReviewThread[] | null>;
|
|
365
|
+
export declare function prReviewThreads(number: number, target?: GhTarget): GhVerb<ReviewThread[] | null>;
|
|
222
366
|
/** A label to create. `color` is hex digits such as `d73a4a`. */
|
|
223
367
|
export interface CreateLabelOptions {
|
|
224
368
|
name: string;
|
|
@@ -230,12 +374,12 @@ export interface CreateLabelOptions {
|
|
|
230
374
|
* `--force` makes it safe to repeat: when the label already exists, its color
|
|
231
375
|
* and description are set to these instead of failing.
|
|
232
376
|
*/
|
|
233
|
-
export declare function createLabel(opts: CreateLabelOptions): GhVerb<void>;
|
|
377
|
+
export declare function createLabel(opts: CreateLabelOptions, target?: GhTarget): GhVerb<void>;
|
|
234
378
|
/** `gh label edit <name>` — recolor or redescribe; omits a flag not given. */
|
|
235
379
|
export declare function editLabel(name: string, opts: {
|
|
236
380
|
color?: string | undefined;
|
|
237
381
|
description?: string | undefined;
|
|
238
|
-
}): GhVerb<void>;
|
|
382
|
+
}, target?: GhTarget): GhVerb<void>;
|
|
239
383
|
/**
|
|
240
384
|
* `gh issue edit <n> [--remove-label <current>] --add-label <new>` — swap
|
|
241
385
|
* one label for another on an issue in ONE call, so the issue is never
|
|
@@ -253,11 +397,11 @@ export declare function editLabel(name: string, opts: {
|
|
|
253
397
|
* issue carries no prior label to remove — the `--remove-label` flag is then
|
|
254
398
|
* omitted rather than passed empty.
|
|
255
399
|
*/
|
|
256
|
-
export declare function setIssueLabel(number: number, currentLabel: string | null, newLabel: string): GhVerb<void>;
|
|
400
|
+
export declare function setIssueLabel(number: number, currentLabel: string | null, newLabel: string, target?: GhTarget): GhVerb<void>;
|
|
257
401
|
/** `gh pr diff <n>` — the PR's unified diff, as text. Checked: an empty diff is a value, a failed call is not. */
|
|
258
|
-
export declare function prDiff(number: number): GhVerb<string>;
|
|
402
|
+
export declare function prDiff(number: number, target?: GhTarget): GhVerb<string>;
|
|
259
403
|
/** `gh pr comment <n> --body <body>` — post a conversation comment, returning the URL gh prints ('' if none). */
|
|
260
|
-
export declare function prComment(number: number, body: string): GhVerb<string>;
|
|
404
|
+
export declare function prComment(number: number, body: string, target?: GhTarget): GhVerb<string>;
|
|
261
405
|
/**
|
|
262
406
|
* One inline comment of a review: a line on the right (new) side of the diff.
|
|
263
407
|
*
|
|
@@ -286,19 +430,28 @@ export interface CreateReviewOptions {
|
|
|
286
430
|
* when GitHub's reply carried none). The event is always `COMMENT`: this
|
|
287
431
|
* library does not offer a way to approve or request changes. Goes through
|
|
288
432
|
* `gh api` with the payload on stdin, because `gh pr review` cannot attach
|
|
289
|
-
* line-anchored comments; `{owner}`/`{repo}`
|
|
290
|
-
* client's working directory.
|
|
433
|
+
* line-anchored comments; `{owner}`/`{repo}` come from the target's repo, or
|
|
434
|
+
* are filled in by `gh` from the client's working directory.
|
|
291
435
|
*
|
|
292
436
|
* @experimental
|
|
293
437
|
*/
|
|
294
|
-
export declare function createReview(number: number, opts: CreateReviewOptions): GhVerb<string>;
|
|
438
|
+
export declare function createReview(number: number, opts: CreateReviewOptions, target?: GhTarget): GhVerb<string>;
|
|
295
439
|
/**
|
|
296
|
-
* The row whose `headRefName` exactly equals `branch`, or null.
|
|
440
|
+
* The first row whose `headRefName` exactly equals `branch`, or null.
|
|
297
441
|
*
|
|
298
|
-
*
|
|
299
|
-
*
|
|
442
|
+
* `prList({ head })` already filters exactly. This is for rows from anywhere
|
|
443
|
+
* else, such as a `search` query with gh's `head:` qualifier, which matches
|
|
444
|
+
* `task/foo-2` for `task/foo`.
|
|
300
445
|
*/
|
|
301
446
|
export declare function pickPrForBranch(rows: PullRequest[] | null, branch: string): PullRequest | null;
|
|
447
|
+
/**
|
|
448
|
+
* The PR a branch names, from `prList({ head, state: 'all' })` rows: the open
|
|
449
|
+
* one, or else the first row (gh lists newest first). Null when there are no
|
|
450
|
+
* rows or the call failed.
|
|
451
|
+
*/
|
|
452
|
+
export declare function branchPr(result: ListResult<PullRequest> | null): PullRequest | null;
|
|
453
|
+
/** The field set {@link branchPr} needs, ahead of `fields`. */
|
|
454
|
+
export declare function branchPrFields(fields: readonly string[]): string[];
|
|
302
455
|
/**
|
|
303
456
|
* True when GitHub has not finished computing this PR's mergeability.
|
|
304
457
|
*
|
package/dist/verbs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verbs.d.ts","sourceRoot":"","sources":["../verbs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"verbs.d.ts","sourceRoot":"","sources":["../verbs.ts"],"names":[],"mappings":"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"}
|