@effected/github 0.2.3 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CodeScanning.js +80 -0
- package/DeploymentEnvironment.js +75 -0
- package/GitHubApp.js +1 -1
- package/GitHubClient.js +40 -7
- package/GitHubError.js +1 -1
- package/GitHubRepository.js +174 -5
- package/GraphQL.js +1 -1
- package/README.md +76 -2
- package/Repo.js +1 -1
- package/RepositorySecret.js +186 -0
- package/RepositorySecurity.js +141 -0
- package/RepositoryVariable.js +174 -0
- package/Ruleset.js +143 -0
- package/TokenPermissions.js +1 -1
- package/WorkflowDispatch.js +17 -0
- package/index.d.ts +672 -11
- package/index.js +8 -2
- package/internal/crypto.js +63 -0
- package/package.json +5 -3
package/index.d.ts
CHANGED
|
@@ -577,28 +577,92 @@ interface GitHubClientOptions {
|
|
|
577
577
|
*/
|
|
578
578
|
readonly fetch?: typeof globalThis.fetch | undefined;
|
|
579
579
|
}
|
|
580
|
+
/**
|
|
581
|
+
* One call served by {@link GitHubClient.layerFixture}, as recorded in
|
|
582
|
+
* {@link GitHubFixtures.requested}.
|
|
583
|
+
*
|
|
584
|
+
* @public
|
|
585
|
+
*/
|
|
586
|
+
interface RecordedCall {
|
|
587
|
+
/** Which client surface was called. */
|
|
588
|
+
readonly kind: "request" | "requestDecoded" | "paginate" | "graphql";
|
|
589
|
+
/** The route literal, or the document name for `graphql`. */
|
|
590
|
+
readonly route: string;
|
|
591
|
+
/** The params (or GraphQL variables) the call was made with. */
|
|
592
|
+
readonly params: Record<string, unknown>;
|
|
593
|
+
/** The page size asked for; paginated reads only. */
|
|
594
|
+
readonly perPage?: number;
|
|
595
|
+
}
|
|
580
596
|
/**
|
|
581
597
|
* A recorded response table for {@link GitHubClient.layerFixture}.
|
|
582
598
|
*
|
|
583
599
|
* @public
|
|
584
600
|
*/
|
|
585
601
|
interface GitHubFixtures {
|
|
586
|
-
/**
|
|
602
|
+
/**
|
|
603
|
+
* Keyed by route; the value is the `data` payload a request answers with.
|
|
604
|
+
*
|
|
605
|
+
* @remarks
|
|
606
|
+
* A recorded **`GitHubError` is the response**: the call fails with it. That
|
|
607
|
+
* is how a suite stubs a 404 (or a rate-limit, or a 422) deliberately,
|
|
608
|
+
* rather than relying on a route's absence to produce one — absence is a
|
|
609
|
+
* wiring mistake and {@link GitHubFixtures.unstubbed} treats it as such.
|
|
610
|
+
*/
|
|
587
611
|
readonly request?: Readonly<Record<string, unknown>> | undefined;
|
|
588
|
-
/**
|
|
589
|
-
|
|
612
|
+
/**
|
|
613
|
+
* Keyed by route; the value is the whole collection, paged on demand — or a
|
|
614
|
+
* `GitHubError` the paginated read fails with.
|
|
615
|
+
*/
|
|
616
|
+
readonly paginate?: Readonly<Record<string, ReadonlyArray<unknown> | GitHubError>> | undefined;
|
|
590
617
|
/** Keyed by document name; the value is the raw payload to decode. */
|
|
591
618
|
readonly graphql?: Readonly<Record<string, unknown>> | undefined;
|
|
619
|
+
/**
|
|
620
|
+
* What a route with **no fixture entry** does. Defaults to `"die"`.
|
|
621
|
+
*
|
|
622
|
+
* @remarks
|
|
623
|
+
* A missing fixture is a **test wiring** mistake, not a condition the code
|
|
624
|
+
* under test should handle, so the default kills the fiber rather than
|
|
625
|
+
* entering the error channel — the same treatment an absent `graphql`
|
|
626
|
+
* fixture has always had.
|
|
627
|
+
*
|
|
628
|
+
* The default used to be `"fail"`, and the reason it changed is worth
|
|
629
|
+
* knowing before you set it back: **a typed failure is only loud in code
|
|
630
|
+
* that does not catch.** A consumer whose methods each catch `GitHubError`
|
|
631
|
+
* and report it — a per-resource sync, say — turns a missing stub into a
|
|
632
|
+
* *different execution path* rather than a failure, and the assertions then
|
|
633
|
+
* fail for a new reason with nothing in any message naming a fixture. That
|
|
634
|
+
* cost `@spencerbeggs/reposets` 28 tests reading as ordinary logic bugs.
|
|
635
|
+
*
|
|
636
|
+
* - `"die"` — defect naming the route. Loud in every consumer.
|
|
637
|
+
* - `"fail"` — the old behaviour: `GitHubError.notFound`. Rarely what you
|
|
638
|
+
* want now that a recorded `GitHubError` value stubs a failure explicitly:
|
|
639
|
+
* `{ "GET /repos/{owner}/{repo}": GitHubError.notFound("read", "repo") }`
|
|
640
|
+
* says which route fails and why, where absence says only "unwired".
|
|
641
|
+
* - `"empty"` — serve `{}` for a request and no items for a paginated read.
|
|
642
|
+
* For a suite whose subject is decisions rather than endpoints.
|
|
643
|
+
*
|
|
644
|
+
* `graphql` ignores this and always dies: its payload is decoded against the
|
|
645
|
+
* document's schema, so there is no empty value that would satisfy it.
|
|
646
|
+
*/
|
|
647
|
+
readonly unstubbed?: "die" | "fail" | "empty" | undefined;
|
|
592
648
|
/** What `rateLimit` answers. */
|
|
593
649
|
readonly rateLimit?: RateLimitSnapshot | undefined;
|
|
594
650
|
/**
|
|
595
|
-
* Every
|
|
596
|
-
*
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
651
|
+
* Every call the fixture served, in order. Populated as the test runs.
|
|
652
|
+
*
|
|
653
|
+
* @remarks
|
|
654
|
+
* `kind` says which surface was used. A paginated read carries the
|
|
655
|
+
* `perPage` it asked for; `request` and `requestDecoded` carry the
|
|
656
|
+
* **params** they were called with, which is what lets a suite assert that a
|
|
657
|
+
* method sent the right `owner`/`repo`/body rather than only the right
|
|
658
|
+
* route. `graphql` records the document name as `route`.
|
|
659
|
+
*
|
|
660
|
+
* Recording params was added for the resource modules ported in from
|
|
661
|
+
* `@spencerbeggs/reposets`, whose ~80-line hand-rolled harness existed
|
|
662
|
+
* because every one of their methods goes through `request` and a fixture
|
|
663
|
+
* could assert nothing about them.
|
|
664
|
+
*/
|
|
665
|
+
readonly requested?: Array<RecordedCall> | undefined;
|
|
602
666
|
}
|
|
603
667
|
declare const GitHubClient_base: Context.ServiceClass<GitHubClient, "@effected/github/GitHubClient", GitHubClientShape>;
|
|
604
668
|
/**
|
|
@@ -1062,6 +1126,140 @@ declare class CheckRun extends CheckRun_base {
|
|
|
1062
1126
|
static readonly layerTest: (overrides?: Partial<CheckRunShape>) => Layer.Layer<CheckRun>;
|
|
1063
1127
|
}
|
|
1064
1128
|
//#endregion
|
|
1129
|
+
//#region src/CodeScanning.d.ts
|
|
1130
|
+
/**
|
|
1131
|
+
* A CodeQL default-setup configuration.
|
|
1132
|
+
*
|
|
1133
|
+
* @remarks
|
|
1134
|
+
* Every field is optional and an **omitted field means "leave it alone"**, which
|
|
1135
|
+
* is why this is a partial rather than a full configuration: sending
|
|
1136
|
+
* `undefined` for a key the caller never mentioned would clear a setting they
|
|
1137
|
+
* did not ask to change.
|
|
1138
|
+
*
|
|
1139
|
+
* @public
|
|
1140
|
+
*/
|
|
1141
|
+
interface CodeScanningSetup {
|
|
1142
|
+
/** Whether default setup is `configured` or `not-configured`. */
|
|
1143
|
+
readonly state?: "configured" | "not-configured" | undefined;
|
|
1144
|
+
/** The CodeQL languages to analyse. */
|
|
1145
|
+
readonly languages?: ReadonlyArray<string> | undefined;
|
|
1146
|
+
/** `default` or `extended`. */
|
|
1147
|
+
readonly query_suite?: string | undefined;
|
|
1148
|
+
/** `remote` or `remote_and_local`. */
|
|
1149
|
+
readonly threat_model?: string | undefined;
|
|
1150
|
+
/** `standard` or `labeled`. */
|
|
1151
|
+
readonly runner_type?: string | undefined;
|
|
1152
|
+
/** The runner label, when `runner_type` is `labeled`. */
|
|
1153
|
+
readonly runner_label?: string | undefined;
|
|
1154
|
+
}
|
|
1155
|
+
/**
|
|
1156
|
+
* CodeQL default setup, and the language detection that gates it.
|
|
1157
|
+
*
|
|
1158
|
+
* @public
|
|
1159
|
+
*/
|
|
1160
|
+
interface CodeScanningShape {
|
|
1161
|
+
/**
|
|
1162
|
+
* Apply a default-setup configuration.
|
|
1163
|
+
*
|
|
1164
|
+
* @remarks
|
|
1165
|
+
* The endpoint answers **202 Accepted** and configures asynchronously.
|
|
1166
|
+
* Nothing here polls: a successful call means GitHub accepted the request,
|
|
1167
|
+
* not that scanning is running.
|
|
1168
|
+
*/
|
|
1169
|
+
readonly configure: (setup: CodeScanningSetup) => Effect.Effect<void, GitHubError, Repo>;
|
|
1170
|
+
/**
|
|
1171
|
+
* The languages GitHub detects in the repository.
|
|
1172
|
+
*
|
|
1173
|
+
* @remarks
|
|
1174
|
+
* The response maps language name to bytes; only the names are returned, in
|
|
1175
|
+
* GitHub's own order (most bytes first). Use it to filter a configured
|
|
1176
|
+
* language list down to what the repository actually contains — GitHub
|
|
1177
|
+
* rejects a default-setup call naming a language it does not detect.
|
|
1178
|
+
*/
|
|
1179
|
+
readonly languages: () => Effect.Effect<ReadonlyArray<string>, GitHubError, Repo>;
|
|
1180
|
+
}
|
|
1181
|
+
declare const CodeScanning_base: Context.ServiceClass<CodeScanning, "@effected/github/CodeScanning", CodeScanningShape>;
|
|
1182
|
+
/**
|
|
1183
|
+
* CodeQL default setup.
|
|
1184
|
+
*
|
|
1185
|
+
* @public
|
|
1186
|
+
*/
|
|
1187
|
+
declare class CodeScanning extends CodeScanning_base {
|
|
1188
|
+
/**
|
|
1189
|
+
* @remarks
|
|
1190
|
+
* The callback is written `(client) => make(client)` rather than passed as
|
|
1191
|
+
* `make` directly, and that is load-bearing: a static initializer runs while
|
|
1192
|
+
* the module body is still evaluating, so naming a `const` declared further
|
|
1193
|
+
* down throws `Cannot access 'make' before initialization` **at import time**,
|
|
1194
|
+
* with a clean typecheck.
|
|
1195
|
+
*/
|
|
1196
|
+
static readonly layer: Layer.Layer<CodeScanning, never, GitHubClient>;
|
|
1197
|
+
/** An in-memory double; unstubbed members die naming themselves. */
|
|
1198
|
+
static readonly makeTest: (overrides?: Partial<CodeScanningShape>) => CodeScanningShape;
|
|
1199
|
+
/** {@link CodeScanning.makeTest} behind a `Layer`. */
|
|
1200
|
+
static readonly layerTest: (overrides?: Partial<CodeScanningShape>) => Layer.Layer<CodeScanning>;
|
|
1201
|
+
}
|
|
1202
|
+
//#endregion
|
|
1203
|
+
//#region src/DeploymentEnvironment.d.ts
|
|
1204
|
+
/**
|
|
1205
|
+
* A deployment environment, as listing returns it.
|
|
1206
|
+
*
|
|
1207
|
+
* @public
|
|
1208
|
+
*/
|
|
1209
|
+
interface DeploymentEnvironmentInfo {
|
|
1210
|
+
readonly name: string;
|
|
1211
|
+
}
|
|
1212
|
+
/**
|
|
1213
|
+
* Deployment environments.
|
|
1214
|
+
*
|
|
1215
|
+
* @public
|
|
1216
|
+
*/
|
|
1217
|
+
interface DeploymentEnvironmentShape {
|
|
1218
|
+
/**
|
|
1219
|
+
* Create or update a deployment environment.
|
|
1220
|
+
*
|
|
1221
|
+
* @remarks
|
|
1222
|
+
* The route is **idempotent** — a `PUT` on an existing environment updates it
|
|
1223
|
+
* — so there is no list-then-branch here, unlike variables.
|
|
1224
|
+
*
|
|
1225
|
+
* `config` stays an open record because the protection-rule body is a moving
|
|
1226
|
+
* target: wait timers, reviewers, deployment-branch policies and whatever
|
|
1227
|
+
* GitHub adds next.
|
|
1228
|
+
*/
|
|
1229
|
+
readonly upsert: (name: string, config?: Record<string, unknown>) => Effect.Effect<void, GitHubError, Repo>;
|
|
1230
|
+
/** The repository's deployment environments. */
|
|
1231
|
+
readonly list: () => Effect.Effect<ReadonlyArray<DeploymentEnvironmentInfo>, GitHubError, Repo>;
|
|
1232
|
+
/**
|
|
1233
|
+
* Remove one deployment environment.
|
|
1234
|
+
*
|
|
1235
|
+
* @remarks
|
|
1236
|
+
* **This deletes the environment's secrets and variables with it.** Anything
|
|
1237
|
+
* sequencing a cleanup pass depends on that: removing an environment after
|
|
1238
|
+
* its secrets is redundant, and removing it before them makes those deletions
|
|
1239
|
+
* fail against a resource that no longer exists.
|
|
1240
|
+
*/
|
|
1241
|
+
readonly delete: (name: string) => Effect.Effect<void, GitHubError, Repo>;
|
|
1242
|
+
}
|
|
1243
|
+
declare const DeploymentEnvironment_base: Context.ServiceClass<DeploymentEnvironment, "@effected/github/DeploymentEnvironment", DeploymentEnvironmentShape>;
|
|
1244
|
+
/**
|
|
1245
|
+
* Deployment environments.
|
|
1246
|
+
*
|
|
1247
|
+
* @public
|
|
1248
|
+
*/
|
|
1249
|
+
declare class DeploymentEnvironment extends DeploymentEnvironment_base {
|
|
1250
|
+
/**
|
|
1251
|
+
* @remarks
|
|
1252
|
+
* `(client) => make(client)` rather than `make`: a static initializer runs
|
|
1253
|
+
* while the module body is still evaluating, so naming a `const` declared
|
|
1254
|
+
* further down throws at import time with a clean typecheck.
|
|
1255
|
+
*/
|
|
1256
|
+
static readonly layer: Layer.Layer<DeploymentEnvironment, never, GitHubClient>;
|
|
1257
|
+
/** An in-memory double; unstubbed members die naming themselves. */
|
|
1258
|
+
static readonly makeTest: (overrides?: Partial<DeploymentEnvironmentShape>) => DeploymentEnvironmentShape;
|
|
1259
|
+
/** {@link DeploymentEnvironment.makeTest} behind a `Layer`. */
|
|
1260
|
+
static readonly layerTest: (overrides?: Partial<DeploymentEnvironmentShape>) => Layer.Layer<DeploymentEnvironment>;
|
|
1261
|
+
}
|
|
1262
|
+
//#endregion
|
|
1065
1263
|
//#region src/GitBranch.d.ts
|
|
1066
1264
|
/**
|
|
1067
1265
|
* What {@link GitBranchShape.upsert} did.
|
|
@@ -1938,6 +2136,79 @@ type RepositorySettings = Data<"GET /repos/{owner}/{repo}">;
|
|
|
1938
2136
|
* @public
|
|
1939
2137
|
*/
|
|
1940
2138
|
type RepositoryPatch = Omit<Params<"PATCH /repos/{owner}/{repo}">, "owner" | "repo">;
|
|
2139
|
+
/**
|
|
2140
|
+
* Whether an account is a user or an organization.
|
|
2141
|
+
*
|
|
2142
|
+
* @public
|
|
2143
|
+
*/
|
|
2144
|
+
type OwnerType = "User" | "Organization";
|
|
2145
|
+
/**
|
|
2146
|
+
* Fields in the user-facing `security_and_analysis` block that GitHub accepts
|
|
2147
|
+
* as `{ status: "enabled" | "disabled" }`.
|
|
2148
|
+
*
|
|
2149
|
+
* @remarks
|
|
2150
|
+
* A caller supplies the bare string; it is wrapped before sending.
|
|
2151
|
+
*
|
|
2152
|
+
* @public
|
|
2153
|
+
*/
|
|
2154
|
+
declare const SECURITY_ANALYSIS_STATUS_FIELDS: ReadonlySet<string>;
|
|
2155
|
+
/**
|
|
2156
|
+
* Settings reachable **only** through the GraphQL `updateRepository` mutation,
|
|
2157
|
+
* mapped from snake_case keys to camelCase GraphQL input fields.
|
|
2158
|
+
*
|
|
2159
|
+
* @remarks
|
|
2160
|
+
* GitHub never exposed these two on the REST repository endpoint. Setting
|
|
2161
|
+
* either forces a second round trip to learn the repository's node id.
|
|
2162
|
+
*
|
|
2163
|
+
* @public
|
|
2164
|
+
*/
|
|
2165
|
+
declare const GRAPHQL_ONLY_SETTINGS: Readonly<Record<string, string>>;
|
|
2166
|
+
/**
|
|
2167
|
+
* Translate a user-facing `security_and_analysis` block into the shape
|
|
2168
|
+
* `PATCH /repos/{owner}/{repo}` expects.
|
|
2169
|
+
*
|
|
2170
|
+
* @remarks
|
|
2171
|
+
* **Both shapes are accepted.** A bare `"enabled"` / `"disabled"` is wrapped;
|
|
2172
|
+
* an already-wrapped `{ status }` — which is what `RepositoryPatch` actually
|
|
2173
|
+
* types, since it is GitHub's own parameter type — passes through untouched.
|
|
2174
|
+
* Accepting only the bare string would silently drop the block for a caller
|
|
2175
|
+
* following the types.
|
|
2176
|
+
*
|
|
2177
|
+
* Reviewer entries must already carry a numeric `reviewer_id` and
|
|
2178
|
+
* `reviewer_type`; resolving those from team slugs is the caller's job — see
|
|
2179
|
+
* `Ruleset.teamId`.
|
|
2180
|
+
*
|
|
2181
|
+
* An **empty** `delegated_bypass_reviewers` array is treated as "no change"
|
|
2182
|
+
* rather than "no reviewers". GitHub rejects `{ reviewers: [] }` outright when
|
|
2183
|
+
* delegated bypass is enabled, so forwarding it would turn an omission into a
|
|
2184
|
+
* failure.
|
|
2185
|
+
*
|
|
2186
|
+
* @public
|
|
2187
|
+
*/
|
|
2188
|
+
declare const transformSecurityAndAnalysis: (value: unknown) => Record<string, unknown> | undefined;
|
|
2189
|
+
/**
|
|
2190
|
+
* What {@link GitHubRepositoryShape.applySettings} actually sent.
|
|
2191
|
+
*
|
|
2192
|
+
* @remarks
|
|
2193
|
+
* **These are the fields that went out, not the fields you asked for**, and the
|
|
2194
|
+
* difference is the point. `applySettings` drops what GitHub would reject —
|
|
2195
|
+
* merge keys whose strategy is being disabled, a `security_and_analysis` block
|
|
2196
|
+
* that normalises to nothing — so a caller reporting `Object.keys(input)` is
|
|
2197
|
+
* describing its own intent while the package decides the content. The two
|
|
2198
|
+
* agree right up until a field is dropped, which is exactly the case anyone
|
|
2199
|
+
* reading a dry run is trying to check.
|
|
2200
|
+
*
|
|
2201
|
+
* Both lists use the **caller's** key names, not the wire names, because the
|
|
2202
|
+
* audience for them is a person reading a plan against the config they wrote.
|
|
2203
|
+
*
|
|
2204
|
+
* @public
|
|
2205
|
+
*/
|
|
2206
|
+
interface AppliedSettings {
|
|
2207
|
+
/** Keys sent on the REST patch, after preparation dropped anything GitHub would refuse. */
|
|
2208
|
+
readonly rest: ReadonlyArray<string>;
|
|
2209
|
+
/** Keys sent through the GraphQL mutation, named as the caller supplied them. */
|
|
2210
|
+
readonly graphql: ReadonlyArray<string>;
|
|
2211
|
+
}
|
|
1941
2212
|
/**
|
|
1942
2213
|
* The repository itself.
|
|
1943
2214
|
*
|
|
@@ -1964,6 +2235,41 @@ interface GitHubRepositoryShape {
|
|
|
1964
2235
|
* mutations, which is why a second consumer cast `repos.get` for it alone.
|
|
1965
2236
|
*/
|
|
1966
2237
|
readonly nodeId: Effect.Effect<string, GitHubError, Repo>;
|
|
2238
|
+
/**
|
|
2239
|
+
* Whether the repository's owner is a user or an organization.
|
|
2240
|
+
*
|
|
2241
|
+
* @remarks
|
|
2242
|
+
* Gates the settings that only exist on organization-owned repositories:
|
|
2243
|
+
* sending one to a personal repository is rejected, so a caller applying a
|
|
2244
|
+
* shared settings template filters by this first.
|
|
2245
|
+
*
|
|
2246
|
+
* The route is account-scoped (`GET /users/{username}`) but the question is a
|
|
2247
|
+
* repository question — *may I send org-only fields to this repository?* —
|
|
2248
|
+
* so it sources the login from `Repo.owner` rather than taking an argument.
|
|
2249
|
+
* Shaping the API around the route instead of the question would hand every
|
|
2250
|
+
* caller a login to thread for no reason.
|
|
2251
|
+
*/
|
|
2252
|
+
readonly ownerType: Effect.Effect<OwnerType, GitHubError, Repo>;
|
|
2253
|
+
/**
|
|
2254
|
+
* Apply a settings map that may span REST and GraphQL.
|
|
2255
|
+
*
|
|
2256
|
+
* @remarks
|
|
2257
|
+
* `updateSettings` is the thin, faithfully-typed PATCH and returns what
|
|
2258
|
+
* GitHub then reports. This is the **applicator**: it takes an open map,
|
|
2259
|
+
* routes each key to whichever API can actually set it, and returns nothing.
|
|
2260
|
+
*
|
|
2261
|
+
* Two settings — `has_sponsorships` and `has_pull_requests` — have never
|
|
2262
|
+
* existed on the REST endpoint and are only reachable through GraphQL's
|
|
2263
|
+
* `updateRepository`, which addresses a repository by **node id**. So a map
|
|
2264
|
+
* touching either costs an extra read; a map touching neither does not, which
|
|
2265
|
+
* is the common case.
|
|
2266
|
+
*
|
|
2267
|
+
* The map is open by design. GitHub's settings surface is large and moving,
|
|
2268
|
+
* and a closed type here would date the package — but it also means a typo is
|
|
2269
|
+
* forwarded rather than rejected, so a caller that owns a schema should
|
|
2270
|
+
* validate before calling.
|
|
2271
|
+
*/
|
|
2272
|
+
readonly applySettings: (settings: Record<string, unknown>) => Effect.Effect<AppliedSettings, GitHubError | GitHubGraphQLError, Repo>;
|
|
1967
2273
|
}
|
|
1968
2274
|
declare const GitHubRepository_base: Context.ServiceClass<GitHubRepository, "@effected/github/GitHubRepository", GitHubRepositoryShape>;
|
|
1969
2275
|
/**
|
|
@@ -2345,6 +2651,323 @@ declare class PullRequestComment extends PullRequestComment_base {
|
|
|
2345
2651
|
static readonly layerTest: (overrides?: Partial<PullRequestCommentShape>) => Layer.Layer<PullRequestComment>;
|
|
2346
2652
|
}
|
|
2347
2653
|
//#endregion
|
|
2654
|
+
//#region src/RepositorySecret.d.ts
|
|
2655
|
+
/**
|
|
2656
|
+
* Which secret store an operation acts on.
|
|
2657
|
+
*
|
|
2658
|
+
* @remarks
|
|
2659
|
+
* Three separate stores on the same repository, each with **its own public
|
|
2660
|
+
* key** — which is why a key fetch cannot be cached across scopes.
|
|
2661
|
+
*
|
|
2662
|
+
* @public
|
|
2663
|
+
*/
|
|
2664
|
+
type SecretScope = "actions" | "dependabot" | "codespaces";
|
|
2665
|
+
/**
|
|
2666
|
+
* A secret, as listing returns it.
|
|
2667
|
+
*
|
|
2668
|
+
* @remarks
|
|
2669
|
+
* The name only. GitHub never returns a secret's value from any endpoint —
|
|
2670
|
+
* that is the point of a secret store — so there is nothing else to carry, and
|
|
2671
|
+
* a consumer comparing desired against live can detect a **deleted** secret but
|
|
2672
|
+
* never an **edited** one.
|
|
2673
|
+
*
|
|
2674
|
+
* @public
|
|
2675
|
+
*/
|
|
2676
|
+
interface SecretInfo {
|
|
2677
|
+
readonly name: string;
|
|
2678
|
+
}
|
|
2679
|
+
/**
|
|
2680
|
+
* Repository and environment secrets.
|
|
2681
|
+
*
|
|
2682
|
+
* @public
|
|
2683
|
+
*/
|
|
2684
|
+
interface RepositorySecretShape {
|
|
2685
|
+
/** Encrypt and write one repository secret in the given store. */
|
|
2686
|
+
readonly set: (name: string, value: Redacted.Redacted<string>, scope?: SecretScope) => Effect.Effect<void, GitHubError, Repo>;
|
|
2687
|
+
/** The names of the repository's secrets in the given store. */
|
|
2688
|
+
readonly list: (scope?: SecretScope) => Effect.Effect<ReadonlyArray<SecretInfo>, GitHubError, Repo>;
|
|
2689
|
+
/** Remove one repository secret from the given store. */
|
|
2690
|
+
readonly delete: (name: string, scope?: SecretScope) => Effect.Effect<void, GitHubError, Repo>;
|
|
2691
|
+
/** Encrypt and write one environment secret. */
|
|
2692
|
+
readonly setForEnvironment: (environment: string, name: string, value: Redacted.Redacted<string>) => Effect.Effect<void, GitHubError, Repo>;
|
|
2693
|
+
/** The names of one environment's secrets. */
|
|
2694
|
+
readonly listForEnvironment: (environment: string) => Effect.Effect<ReadonlyArray<SecretInfo>, GitHubError, Repo>;
|
|
2695
|
+
/** Remove one environment secret. */
|
|
2696
|
+
readonly deleteForEnvironment: (environment: string, name: string) => Effect.Effect<void, GitHubError, Repo>;
|
|
2697
|
+
}
|
|
2698
|
+
declare const RepositorySecret_base: Context.ServiceClass<RepositorySecret, "@effected/github/RepositorySecret", RepositorySecretShape>;
|
|
2699
|
+
/**
|
|
2700
|
+
* Secrets, encrypted client-side before they leave the process.
|
|
2701
|
+
*
|
|
2702
|
+
* @remarks
|
|
2703
|
+
* Every write is a **two-step**: fetch the store's public key, then `PUT` a
|
|
2704
|
+
* libsodium sealed box. The plaintext never crosses the wire, and the key fetch
|
|
2705
|
+
* cannot be cached across stores because each has its own key.
|
|
2706
|
+
*
|
|
2707
|
+
* ## The value is `Redacted`
|
|
2708
|
+
*
|
|
2709
|
+
* Not decoration. A plaintext secret in a `string` is one interpolation, one
|
|
2710
|
+
* `JSON.stringify` of a params object, or one logged error away from a
|
|
2711
|
+
* transcript — and the log line that leaks it usually looks like a diagnostic
|
|
2712
|
+
* someone added to debug an unrelated failure. `Redacted` closes those paths at
|
|
2713
|
+
* the type; this module performs the single `Redacted.value` unwrap, at the
|
|
2714
|
+
* moment of encryption, and the sealed box is what continues.
|
|
2715
|
+
*
|
|
2716
|
+
* @public
|
|
2717
|
+
*/
|
|
2718
|
+
declare class RepositorySecret extends RepositorySecret_base {
|
|
2719
|
+
/**
|
|
2720
|
+
* @remarks
|
|
2721
|
+
* `(client) => make(client)` rather than `make`: a static initializer runs
|
|
2722
|
+
* while the module body is still evaluating, so naming a `const` declared
|
|
2723
|
+
* further down throws at import time with a clean typecheck.
|
|
2724
|
+
*/
|
|
2725
|
+
static readonly layer: Layer.Layer<RepositorySecret, never, GitHubClient>;
|
|
2726
|
+
/** An in-memory double; unstubbed members die naming themselves. */
|
|
2727
|
+
static readonly makeTest: (overrides?: Partial<RepositorySecretShape>) => RepositorySecretShape;
|
|
2728
|
+
/** {@link RepositorySecret.makeTest} behind a `Layer`. */
|
|
2729
|
+
static readonly layerTest: (overrides?: Partial<RepositorySecretShape>) => Layer.Layer<RepositorySecret>;
|
|
2730
|
+
}
|
|
2731
|
+
//#endregion
|
|
2732
|
+
//#region src/RepositorySecurity.d.ts
|
|
2733
|
+
/**
|
|
2734
|
+
* The three repository security features that have their own endpoints.
|
|
2735
|
+
*
|
|
2736
|
+
* @public
|
|
2737
|
+
*/
|
|
2738
|
+
interface RepositorySecurityShape {
|
|
2739
|
+
/** Whether Dependabot vulnerability alerts are on. */
|
|
2740
|
+
readonly vulnerabilityAlerts: () => Effect.Effect<boolean, GitHubError, Repo>;
|
|
2741
|
+
/** Turn Dependabot vulnerability alerts on or off. */
|
|
2742
|
+
readonly setVulnerabilityAlerts: (enabled: boolean) => Effect.Effect<void, GitHubError, Repo>;
|
|
2743
|
+
/** Whether Dependabot security pull requests are on. */
|
|
2744
|
+
readonly automatedSecurityFixes: () => Effect.Effect<boolean, GitHubError, Repo>;
|
|
2745
|
+
/** Turn Dependabot security pull requests on or off. */
|
|
2746
|
+
readonly setAutomatedSecurityFixes: (enabled: boolean) => Effect.Effect<void, GitHubError, Repo>;
|
|
2747
|
+
/** Whether the private vulnerability reporting inbox is on. */
|
|
2748
|
+
readonly privateVulnerabilityReporting: () => Effect.Effect<boolean, GitHubError, Repo>;
|
|
2749
|
+
/** Turn the private vulnerability reporting inbox on or off. */
|
|
2750
|
+
readonly setPrivateVulnerabilityReporting: (enabled: boolean) => Effect.Effect<void, GitHubError, Repo>;
|
|
2751
|
+
}
|
|
2752
|
+
declare const RepositorySecurity_base: Context.ServiceClass<RepositorySecurity, "@effected/github/RepositorySecurity", RepositorySecurityShape>;
|
|
2753
|
+
/**
|
|
2754
|
+
* Repository security features with dedicated endpoints.
|
|
2755
|
+
*
|
|
2756
|
+
* @remarks
|
|
2757
|
+
* These are **not** `security_and_analysis` fields and cannot ride along on the
|
|
2758
|
+
* settings `PATCH`. Each is its own pair of endpoints where **the HTTP verb is
|
|
2759
|
+
* the value**, which is why every setter branches on `enabled` rather than
|
|
2760
|
+
* sending a body.
|
|
2761
|
+
*
|
|
2762
|
+
* ## Reading them is inconsistent, and the inconsistency is GitHub's
|
|
2763
|
+
*
|
|
2764
|
+
* Preserved faithfully rather than smoothed over, because smoothing it would
|
|
2765
|
+
* mean inventing a behaviour for one of the three:
|
|
2766
|
+
*
|
|
2767
|
+
* | Feature | Enabled | Disabled |
|
|
2768
|
+
* | :--- | :--- | :--- |
|
|
2769
|
+
* | `vulnerability-alerts` | `204` | **`404`** |
|
|
2770
|
+
* | `automated-security-fixes` | `200 { enabled: true }` | `200 { enabled: false }` |
|
|
2771
|
+
* | `private-vulnerability-reporting` | `200 { enabled: true }` | `200 { enabled: false }` |
|
|
2772
|
+
*
|
|
2773
|
+
* So `vulnerabilityAlerts` maps `notFound` to `false` — and **only** `notFound`;
|
|
2774
|
+
* every other failure still fails. A 404 from the other two is a real failure
|
|
2775
|
+
* and stays one, which is why the mapping is not applied uniformly.
|
|
2776
|
+
*
|
|
2777
|
+
* @public
|
|
2778
|
+
*/
|
|
2779
|
+
declare class RepositorySecurity extends RepositorySecurity_base {
|
|
2780
|
+
/**
|
|
2781
|
+
* @remarks
|
|
2782
|
+
* `(client) => make(client)` rather than `make`: a static initializer runs
|
|
2783
|
+
* while the module body is still evaluating, so naming a `const` declared
|
|
2784
|
+
* further down throws at import time with a clean typecheck.
|
|
2785
|
+
*/
|
|
2786
|
+
static readonly layer: Layer.Layer<RepositorySecurity, never, GitHubClient>;
|
|
2787
|
+
/** An in-memory double; unstubbed members die naming themselves. */
|
|
2788
|
+
static readonly makeTest: (overrides?: Partial<RepositorySecurityShape>) => RepositorySecurityShape;
|
|
2789
|
+
/** {@link RepositorySecurity.makeTest} behind a `Layer`. */
|
|
2790
|
+
static readonly layerTest: (overrides?: Partial<RepositorySecurityShape>) => Layer.Layer<RepositorySecurity>;
|
|
2791
|
+
}
|
|
2792
|
+
//#endregion
|
|
2793
|
+
//#region src/RepositoryVariable.d.ts
|
|
2794
|
+
/**
|
|
2795
|
+
* A variable, as listing returns it.
|
|
2796
|
+
*
|
|
2797
|
+
* @remarks
|
|
2798
|
+
* Unlike a secret this carries its **value**: variables are readable, so a
|
|
2799
|
+
* consumer comparing desired against live can detect an *edited* variable and
|
|
2800
|
+
* not merely a deleted one. Discarding the value in a projection here would
|
|
2801
|
+
* throw that away silently.
|
|
2802
|
+
*
|
|
2803
|
+
* @public
|
|
2804
|
+
*/
|
|
2805
|
+
interface VariableInfo {
|
|
2806
|
+
readonly name: string;
|
|
2807
|
+
readonly value: string;
|
|
2808
|
+
}
|
|
2809
|
+
/**
|
|
2810
|
+
* Repository and environment variables.
|
|
2811
|
+
*
|
|
2812
|
+
* @public
|
|
2813
|
+
*/
|
|
2814
|
+
interface RepositoryVariableShape {
|
|
2815
|
+
/**
|
|
2816
|
+
* Create or update one repository variable.
|
|
2817
|
+
*
|
|
2818
|
+
* @remarks
|
|
2819
|
+
* GitHub has **no upsert** for variables: creating uses `POST` on the
|
|
2820
|
+
* collection and updating uses `PATCH` on the item, and each fails if used
|
|
2821
|
+
* for the other case. So this reads first and branches — one extra request
|
|
2822
|
+
* per write, and the reason it is not optional.
|
|
2823
|
+
*
|
|
2824
|
+
* The read is **by name**, not a listing: GitHub answers 404 for an absent
|
|
2825
|
+
* variable, so the check is constant cost rather than growing with a
|
|
2826
|
+
* repository that has nothing to do with the variable being written. Only
|
|
2827
|
+
* `notFound` is absorbed — a 403 from a mis-scoped token still fails, where
|
|
2828
|
+
* treating any error as absence would turn a permissions problem into a
|
|
2829
|
+
* spurious create.
|
|
2830
|
+
*/
|
|
2831
|
+
readonly set: (name: string, value: string) => Effect.Effect<void, GitHubError, Repo>;
|
|
2832
|
+
/** The repository's variables, with their values. */
|
|
2833
|
+
readonly list: () => Effect.Effect<ReadonlyArray<VariableInfo>, GitHubError, Repo>;
|
|
2834
|
+
/** Remove one repository variable. */
|
|
2835
|
+
readonly delete: (name: string) => Effect.Effect<void, GitHubError, Repo>;
|
|
2836
|
+
/** Create or update one environment variable, branching the same way. */
|
|
2837
|
+
readonly setForEnvironment: (environment: string, name: string, value: string) => Effect.Effect<void, GitHubError, Repo>;
|
|
2838
|
+
/** One environment's variables, with their values. */
|
|
2839
|
+
readonly listForEnvironment: (environment: string) => Effect.Effect<ReadonlyArray<VariableInfo>, GitHubError, Repo>;
|
|
2840
|
+
/** Remove one environment variable. */
|
|
2841
|
+
readonly deleteForEnvironment: (environment: string, name: string) => Effect.Effect<void, GitHubError, Repo>;
|
|
2842
|
+
}
|
|
2843
|
+
declare const RepositoryVariable_base: Context.ServiceClass<RepositoryVariable, "@effected/github/RepositoryVariable", RepositoryVariableShape>;
|
|
2844
|
+
/**
|
|
2845
|
+
* Repository and environment variables.
|
|
2846
|
+
*
|
|
2847
|
+
* @remarks
|
|
2848
|
+
* No encryption and no public key, unlike secrets — but also **no upsert**,
|
|
2849
|
+
* which is the asymmetry worth knowing: every write costs a read first, because
|
|
2850
|
+
* the create and update routes are different endpoints with different verbs and
|
|
2851
|
+
* neither tolerates the other's case.
|
|
2852
|
+
*
|
|
2853
|
+
* @public
|
|
2854
|
+
*/
|
|
2855
|
+
declare class RepositoryVariable extends RepositoryVariable_base {
|
|
2856
|
+
/**
|
|
2857
|
+
* @remarks
|
|
2858
|
+
* `(client) => make(client)` rather than `make`: a static initializer runs
|
|
2859
|
+
* while the module body is still evaluating, so naming a `const` declared
|
|
2860
|
+
* further down throws at import time with a clean typecheck.
|
|
2861
|
+
*/
|
|
2862
|
+
static readonly layer: Layer.Layer<RepositoryVariable, never, GitHubClient>;
|
|
2863
|
+
/** An in-memory double; unstubbed members die naming themselves. */
|
|
2864
|
+
static readonly makeTest: (overrides?: Partial<RepositoryVariableShape>) => RepositoryVariableShape;
|
|
2865
|
+
/** {@link RepositoryVariable.makeTest} behind a `Layer`. */
|
|
2866
|
+
static readonly layerTest: (overrides?: Partial<RepositoryVariableShape>) => Layer.Layer<RepositoryVariable>;
|
|
2867
|
+
}
|
|
2868
|
+
//#endregion
|
|
2869
|
+
//#region src/Ruleset.d.ts
|
|
2870
|
+
/**
|
|
2871
|
+
* A ruleset, as listing returns it.
|
|
2872
|
+
*
|
|
2873
|
+
* @remarks
|
|
2874
|
+
* `source_type` is the field that matters and the one easiest to drop from a
|
|
2875
|
+
* projection: a repository's ruleset listing includes rulesets **inherited from
|
|
2876
|
+
* the organization**, and they are indistinguishable from the repository's own
|
|
2877
|
+
* without it.
|
|
2878
|
+
*
|
|
2879
|
+
* @public
|
|
2880
|
+
*/
|
|
2881
|
+
interface RulesetInfo {
|
|
2882
|
+
readonly id: number;
|
|
2883
|
+
readonly name: string;
|
|
2884
|
+
/** `"Repository"` for the repository's own, `"Organization"` for an inherited one. */
|
|
2885
|
+
readonly source_type?: string | undefined;
|
|
2886
|
+
}
|
|
2887
|
+
/**
|
|
2888
|
+
* What a ruleset write sends.
|
|
2889
|
+
*
|
|
2890
|
+
* @remarks
|
|
2891
|
+
* `conditions`, `rules` and `bypass_actors` are open records: GitHub's rule
|
|
2892
|
+
* vocabulary is large, versioned and expanding, and pinning it here would date
|
|
2893
|
+
* the package rather than protect the caller.
|
|
2894
|
+
*
|
|
2895
|
+
* @public
|
|
2896
|
+
*/
|
|
2897
|
+
interface RulesetPayload {
|
|
2898
|
+
readonly name: string;
|
|
2899
|
+
readonly target: string;
|
|
2900
|
+
readonly enforcement: string;
|
|
2901
|
+
readonly conditions?: unknown;
|
|
2902
|
+
readonly rules?: unknown;
|
|
2903
|
+
readonly bypass_actors?: unknown;
|
|
2904
|
+
}
|
|
2905
|
+
/**
|
|
2906
|
+
* Repository rulesets, and the lookups their bypass actors need.
|
|
2907
|
+
*
|
|
2908
|
+
* @public
|
|
2909
|
+
*/
|
|
2910
|
+
interface RulesetShape {
|
|
2911
|
+
/**
|
|
2912
|
+
* Create or update a ruleset, matched by name.
|
|
2913
|
+
*
|
|
2914
|
+
* @remarks
|
|
2915
|
+
* A ruleset has **no natural key** on GitHub's side — only a numeric id
|
|
2916
|
+
* assigned at creation — so this matches on `name`. Renaming a ruleset in a
|
|
2917
|
+
* caller's configuration therefore creates a second one rather than renaming
|
|
2918
|
+
* the first; removing the orphan is the caller's cleanup pass.
|
|
2919
|
+
*/
|
|
2920
|
+
readonly upsert: (payload: RulesetPayload) => Effect.Effect<void, GitHubError, Repo>;
|
|
2921
|
+
/** Every ruleset the repository sees, its own and the organization's. */
|
|
2922
|
+
readonly list: () => Effect.Effect<ReadonlyArray<RulesetInfo>, GitHubError, Repo>;
|
|
2923
|
+
/** Remove one ruleset by id. */
|
|
2924
|
+
readonly delete: (rulesetId: number) => Effect.Effect<void, GitHubError, Repo>;
|
|
2925
|
+
/**
|
|
2926
|
+
* A team's numeric id, for a bypass actor.
|
|
2927
|
+
*
|
|
2928
|
+
* @remarks
|
|
2929
|
+
* Org-scoped, sourced from `Repo.owner` — the organization that owns the
|
|
2930
|
+
* repository. A team in a *different* organization is not reachable here and
|
|
2931
|
+
* should not be: `Repo` would be lying about the scope.
|
|
2932
|
+
*/
|
|
2933
|
+
readonly teamId: (slug: string) => Effect.Effect<number, GitHubError, Repo>;
|
|
2934
|
+
/** An organization role's numeric id, for a bypass actor. */
|
|
2935
|
+
readonly roleId: (name: string) => Effect.Effect<number, GitHubError, Repo>;
|
|
2936
|
+
}
|
|
2937
|
+
declare const Ruleset_base: Context.ServiceClass<Ruleset, "@effected/github/Ruleset", RulesetShape>;
|
|
2938
|
+
/**
|
|
2939
|
+
* Repository rulesets.
|
|
2940
|
+
*
|
|
2941
|
+
* @remarks
|
|
2942
|
+
* ## An inherited ruleset is never written to
|
|
2943
|
+
*
|
|
2944
|
+
* `GET /repos/{owner}/{repo}/rulesets` returns rulesets **inherited from the
|
|
2945
|
+
* organization** alongside the repository's own. Matching by name alone lets a
|
|
2946
|
+
* repository-scoped call issue a `PUT` against the organization's ruleset id —
|
|
2947
|
+
* rewriting policy for **every repository the organization owns**, from a caller
|
|
2948
|
+
* that never mentioned the organization.
|
|
2949
|
+
*
|
|
2950
|
+
* {@link RulesetShape.upsert} filters on `source_type` before matching, so an
|
|
2951
|
+
* inherited ruleset can never be the target of a write. This arrived as a fix
|
|
2952
|
+
* for a live defect in the consumer this module was ported from, where the
|
|
2953
|
+
* filter was absent.
|
|
2954
|
+
*
|
|
2955
|
+
* @public
|
|
2956
|
+
*/
|
|
2957
|
+
declare class Ruleset extends Ruleset_base {
|
|
2958
|
+
/**
|
|
2959
|
+
* @remarks
|
|
2960
|
+
* `(client) => make(client)` rather than `make`: a static initializer runs
|
|
2961
|
+
* while the module body is still evaluating, so naming a `const` declared
|
|
2962
|
+
* further down throws at import time with a clean typecheck.
|
|
2963
|
+
*/
|
|
2964
|
+
static readonly layer: Layer.Layer<Ruleset, never, GitHubClient>;
|
|
2965
|
+
/** An in-memory double; unstubbed members die naming themselves. */
|
|
2966
|
+
static readonly makeTest: (overrides?: Partial<RulesetShape>) => RulesetShape;
|
|
2967
|
+
/** {@link Ruleset.makeTest} behind a `Layer`. */
|
|
2968
|
+
static readonly layerTest: (overrides?: Partial<RulesetShape>) => Layer.Layer<Ruleset>;
|
|
2969
|
+
}
|
|
2970
|
+
//#endregion
|
|
2348
2971
|
//#region src/TokenPermissions.d.ts
|
|
2349
2972
|
/**
|
|
2350
2973
|
* How much access a permission grants.
|
|
@@ -2488,6 +3111,29 @@ declare class WorkflowRunStatus extends WorkflowRunStatus_base {
|
|
|
2488
3111
|
/** Has the run finished, whatever the outcome? */
|
|
2489
3112
|
get isDone(): boolean;
|
|
2490
3113
|
}
|
|
3114
|
+
/**
|
|
3115
|
+
* One workflow defined in the repository.
|
|
3116
|
+
*
|
|
3117
|
+
* @remarks
|
|
3118
|
+
* `state` is GitHub's own value — `active`, `disabled_manually`,
|
|
3119
|
+
* `disabled_inactivity`, and so on. It is reported rather than interpreted:
|
|
3120
|
+
* whether a *disabled* workflow counts for a given GitHub feature is that
|
|
3121
|
+
* feature's rule, not this package's, and encoding a guess here would put an
|
|
3122
|
+
* unverified server-side behaviour in a library that cannot test it. Callers
|
|
3123
|
+
* that care filter on it themselves.
|
|
3124
|
+
*
|
|
3125
|
+
* @public
|
|
3126
|
+
*/
|
|
3127
|
+
interface WorkflowInfo {
|
|
3128
|
+
/** The workflow's numeric id, usable as `workflow_id` on other routes. */
|
|
3129
|
+
readonly id: number;
|
|
3130
|
+
/** The workflow's display name. */
|
|
3131
|
+
readonly name: string;
|
|
3132
|
+
/** Repository-relative path, e.g. `.github/workflows/ci.yml`. */
|
|
3133
|
+
readonly path: string;
|
|
3134
|
+
/** GitHub's state string; see the remarks above before branching on it. */
|
|
3135
|
+
readonly state: string;
|
|
3136
|
+
}
|
|
2491
3137
|
/**
|
|
2492
3138
|
* How long to wait for a dispatched run.
|
|
2493
3139
|
*
|
|
@@ -2508,6 +3154,21 @@ interface WorkflowDispatchShape {
|
|
|
2508
3154
|
/** Fire a `workflow_dispatch` event. GitHub answers 204 with no run id. */
|
|
2509
3155
|
readonly dispatch: (workflow: string, ref: string, inputs?: Record<string, string>) => Effect.Effect<void, GitHubError, Repo>;
|
|
2510
3156
|
readonly runStatus: (runId: number) => Effect.Effect<WorkflowRunStatus, GitHubError, Repo>;
|
|
3157
|
+
/**
|
|
3158
|
+
* Every workflow defined in the repository.
|
|
3159
|
+
*
|
|
3160
|
+
* @remarks
|
|
3161
|
+
* The question this answers is "does this repository have workflows at all",
|
|
3162
|
+
* which nothing else in the package could ask: repository *languages* come
|
|
3163
|
+
* from linguist and can never report `actions`, while GitHub validates that
|
|
3164
|
+
* language against workflow **files**. A consumer offering CodeQL setup
|
|
3165
|
+
* otherwise has to either request `actions` blindly and absorb a 422, or
|
|
3166
|
+
* drop it for every repository including the ones where it is valid.
|
|
3167
|
+
*
|
|
3168
|
+
* An empty array is the honest answer for a repository with no workflows,
|
|
3169
|
+
* not an error.
|
|
3170
|
+
*/
|
|
3171
|
+
readonly list: Effect.Effect<ReadonlyArray<WorkflowInfo>, GitHubError, Repo>;
|
|
2511
3172
|
/**
|
|
2512
3173
|
* Dispatch, find the run it created, and wait for it to finish.
|
|
2513
3174
|
*
|
|
@@ -2536,5 +3197,5 @@ declare class WorkflowDispatch extends WorkflowDispatch_base {
|
|
|
2536
3197
|
static readonly layerTest: (overrides?: Partial<WorkflowDispatchShape>) => Layer.Layer<WorkflowDispatch>;
|
|
2537
3198
|
}
|
|
2538
3199
|
//#endregion
|
|
2539
|
-
export { Annotation, AnnotationLevel, type AppCredentials, AppIdentity, ArtifactMetadata, type ArtifactMetadataShape, Attestation, AttestationListEntry, AttestationRecord, type AttestationShape, BotIdentity, type BranchOutcome, CheckConclusion, CheckRun, CheckRunOutput, CheckRunRef, type CheckRunShape, CommentMarker, CommentRecord, CommitComparison, CommitFile, CommitRef, CommitSummary, type ConcludeCheckRun, ExtraPermission, FileChange, FileContent, FileDeletion, FileMode, FileStatus, GitBranch, type GitBranchShape, GitCommit, type GitCommitShape, GitHubApp, GitHubAppError, type GitHubAppOptions, type GitHubAppShape, GitHubClient, type GitHubClientOptions, type GitHubClientShape, GitHubCommit, type GitHubCommitShape, GitHubContent, type GitHubContentShape, GitHubError, GitHubErrorKind, type GitHubFixtures, GitHubGraphQLError, GitHubIssue, type GitHubIssueShape, GitHubRelease, type GitHubReleaseShape, GitHubRepository, type GitHubRepositoryShape, GitTag, type GitTagShape, GraphQLDocument, GraphQLErrorEntry, Installation, InstallationToken, InvalidRepoRefError, IssueInfo, type LatestSemverOptions, LinkedIssue, MergeMethod, PageOptions, PermissionGap, PermissionLevel, PermissionResult, type PollOptions, PullRequest, PullRequestComment, type PullRequestCommentShape, PullRequestInfo, type PullRequestShape, RateLimitSnapshot, ReleaseAsset, ReleaseInfo, Repo, RepoRef, type RepositoryPatch, type RepositorySettings, type Data as RestData, type RequestExtras as RestExtras, type Item as RestItem, type PaginatingRoute as RestPaginatingRoute, type Params as RestParams, type Response as RestResponse, type Route as RestRoute, RetryPolicy, type RetryableFailure, SemverTag, StorageRecordInput, TagRef, TokenPermissionError, TokenPermissions, type TokenRequest, type UpsertedPullRequest, type VersionFromTag, WorkflowDispatch, type WorkflowDispatchShape, WorkflowRunStatus, versionFromTag };
|
|
3200
|
+
export { Annotation, AnnotationLevel, type AppCredentials, AppIdentity, type AppliedSettings, ArtifactMetadata, type ArtifactMetadataShape, Attestation, AttestationListEntry, AttestationRecord, type AttestationShape, BotIdentity, type BranchOutcome, CheckConclusion, CheckRun, CheckRunOutput, CheckRunRef, type CheckRunShape, CodeScanning, type CodeScanningSetup, type CodeScanningShape, CommentMarker, CommentRecord, CommitComparison, CommitFile, CommitRef, CommitSummary, type ConcludeCheckRun, DeploymentEnvironment, type DeploymentEnvironmentInfo, type DeploymentEnvironmentShape, ExtraPermission, FileChange, FileContent, FileDeletion, FileMode, FileStatus, GRAPHQL_ONLY_SETTINGS, GitBranch, type GitBranchShape, GitCommit, type GitCommitShape, GitHubApp, GitHubAppError, type GitHubAppOptions, type GitHubAppShape, GitHubClient, type GitHubClientOptions, type GitHubClientShape, GitHubCommit, type GitHubCommitShape, GitHubContent, type GitHubContentShape, GitHubError, GitHubErrorKind, type GitHubFixtures, GitHubGraphQLError, GitHubIssue, type GitHubIssueShape, GitHubRelease, type GitHubReleaseShape, GitHubRepository, type GitHubRepositoryShape, GitTag, type GitTagShape, GraphQLDocument, GraphQLErrorEntry, Installation, InstallationToken, InvalidRepoRefError, IssueInfo, type LatestSemverOptions, LinkedIssue, MergeMethod, type OwnerType, PageOptions, PermissionGap, PermissionLevel, PermissionResult, type PollOptions, PullRequest, PullRequestComment, type PullRequestCommentShape, PullRequestInfo, type PullRequestShape, RateLimitSnapshot, type RecordedCall, ReleaseAsset, ReleaseInfo, Repo, RepoRef, type RepositoryPatch, RepositorySecret, type RepositorySecretShape, RepositorySecurity, type RepositorySecurityShape, type RepositorySettings, RepositoryVariable, type RepositoryVariableShape, type Data as RestData, type RequestExtras as RestExtras, type Item as RestItem, type PaginatingRoute as RestPaginatingRoute, type Params as RestParams, type Response as RestResponse, type Route as RestRoute, RetryPolicy, type RetryableFailure, Ruleset, type RulesetInfo, type RulesetPayload, type RulesetShape, SECURITY_ANALYSIS_STATUS_FIELDS, type SecretInfo, type SecretScope, SemverTag, StorageRecordInput, TagRef, TokenPermissionError, TokenPermissions, type TokenRequest, type UpsertedPullRequest, type VariableInfo, type VersionFromTag, WorkflowDispatch, type WorkflowDispatchShape, type WorkflowInfo, WorkflowRunStatus, transformSecurityAndAnalysis, versionFromTag };
|
|
2540
3201
|
//# sourceMappingURL=index.d.ts.map
|