(route: keyof Endpoints | R, parameters?: P): (R extends keyof Endpoints ? Endpoints[R]["request"] : RequestOptions) & Pick;
+ /**
+ * Object with current default route and parameters
+ */
+ DEFAULTS: D & EndpointDefaults;
+ /**
+ * Returns a new `endpoint` interface with new defaults
+ */
+ defaults: (newDefaults: O) => EndpointInterface;
+ merge: {
+ /**
+ * Merges current endpoint defaults with passed route and parameters,
+ * without transforming them into request options.
+ *
+ * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
+ * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
+ *
+ */
+ (route: keyof Endpoints | R, parameters?: P): D & (R extends keyof Endpoints ? Endpoints[R]["request"] & Endpoints[R]["parameters"] : EndpointDefaults) & P;
+ /**
+ * Merges current endpoint defaults with passed route and parameters,
+ * without transforming them into request options.
+ *
+ * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
+ */
+ (options: P): EndpointDefaults & D & P;
+ /**
+ * Returns current default options.
+ *
+ * @deprecated use endpoint.DEFAULTS instead
+ */
+ (): D & EndpointDefaults;
+ };
+ /**
+ * Stateless method to turn endpoint options into request options.
+ * Calling `endpoint(options)` is the same as calling `endpoint.parse(endpoint.merge(options))`.
+ *
+ * @param {object} options `method`, `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
+ */
+ parse: (options: O) => RequestOptions & Pick;
+}
diff --git a/node_modules/@octokit/types/dist-types/EndpointOptions.d.ts b/node_modules/@octokit/types/dist-types/EndpointOptions.d.ts
new file mode 100644
index 0000000..b1b91f1
--- /dev/null
+++ b/node_modules/@octokit/types/dist-types/EndpointOptions.d.ts
@@ -0,0 +1,7 @@
+import { RequestMethod } from "./RequestMethod";
+import { Url } from "./Url";
+import { RequestParameters } from "./RequestParameters";
+export declare type EndpointOptions = RequestParameters & {
+ method: RequestMethod;
+ url: Url;
+};
diff --git a/node_modules/@octokit/types/dist-types/Fetch.d.ts b/node_modules/@octokit/types/dist-types/Fetch.d.ts
new file mode 100644
index 0000000..cbbd5e8
--- /dev/null
+++ b/node_modules/@octokit/types/dist-types/Fetch.d.ts
@@ -0,0 +1,4 @@
+/**
+ * Browser's fetch method (or compatible such as fetch-mock)
+ */
+export declare type Fetch = any;
diff --git a/node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts b/node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts
new file mode 100644
index 0000000..70e1a8d
--- /dev/null
+++ b/node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts
@@ -0,0 +1,5 @@
+declare type Unwrap = T extends Promise ? U : T;
+declare type AnyFunction = (...args: any[]) => any;
+export declare type GetResponseTypeFromEndpointMethod = Unwrap>;
+export declare type GetResponseDataTypeFromEndpointMethod = Unwrap>["data"];
+export {};
diff --git a/node_modules/@octokit/types/dist-types/OctokitResponse.d.ts b/node_modules/@octokit/types/dist-types/OctokitResponse.d.ts
new file mode 100644
index 0000000..28fdfb8
--- /dev/null
+++ b/node_modules/@octokit/types/dist-types/OctokitResponse.d.ts
@@ -0,0 +1,17 @@
+import { ResponseHeaders } from "./ResponseHeaders";
+import { Url } from "./Url";
+export declare type OctokitResponse = {
+ headers: ResponseHeaders;
+ /**
+ * http response code
+ */
+ status: S;
+ /**
+ * URL of response after all redirects
+ */
+ url: Url;
+ /**
+ * Response data as documented in the REST API reference documentation at https://docs.github.com/rest/reference
+ */
+ data: T;
+};
diff --git a/node_modules/@octokit/types/dist-types/RequestError.d.ts b/node_modules/@octokit/types/dist-types/RequestError.d.ts
new file mode 100644
index 0000000..89174e6
--- /dev/null
+++ b/node_modules/@octokit/types/dist-types/RequestError.d.ts
@@ -0,0 +1,11 @@
+export declare type RequestError = {
+ name: string;
+ status: number;
+ documentation_url: string;
+ errors?: Array<{
+ resource: string;
+ code: string;
+ field: string;
+ message?: string;
+ }>;
+};
diff --git a/node_modules/@octokit/types/dist-types/RequestHeaders.d.ts b/node_modules/@octokit/types/dist-types/RequestHeaders.d.ts
new file mode 100644
index 0000000..ac5aae0
--- /dev/null
+++ b/node_modules/@octokit/types/dist-types/RequestHeaders.d.ts
@@ -0,0 +1,15 @@
+export declare type RequestHeaders = {
+ /**
+ * Avoid setting `headers.accept`, use `mediaType.{format|previews}` option instead.
+ */
+ accept?: string;
+ /**
+ * Use `authorization` to send authenticated request, remember `token ` / `bearer ` prefixes. Example: `token 1234567890abcdef1234567890abcdef12345678`
+ */
+ authorization?: string;
+ /**
+ * `user-agent` is set do a default and can be overwritten as needed.
+ */
+ "user-agent"?: string;
+ [header: string]: string | number | undefined;
+};
diff --git a/node_modules/@octokit/types/dist-types/RequestInterface.d.ts b/node_modules/@octokit/types/dist-types/RequestInterface.d.ts
new file mode 100644
index 0000000..851811f
--- /dev/null
+++ b/node_modules/@octokit/types/dist-types/RequestInterface.d.ts
@@ -0,0 +1,34 @@
+import { EndpointInterface } from "./EndpointInterface";
+import { OctokitResponse } from "./OctokitResponse";
+import { RequestParameters } from "./RequestParameters";
+import { Route } from "./Route";
+import { Endpoints } from "./generated/Endpoints";
+export interface RequestInterface {
+ /**
+ * Sends a request based on endpoint options
+ *
+ * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
+ */
+ (options: O & {
+ method?: string;
+ } & ("url" extends keyof D ? {
+ url?: string;
+ } : {
+ url: string;
+ })): Promise>;
+ /**
+ * Sends a request based on endpoint options
+ *
+ * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'`
+ * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
+ */
+ (route: keyof Endpoints | R, options?: R extends keyof Endpoints ? Endpoints[R]["parameters"] & RequestParameters : RequestParameters): R extends keyof Endpoints ? Promise : Promise>;
+ /**
+ * Returns a new `request` with updated route and parameters
+ */
+ defaults: (newDefaults: O) => RequestInterface;
+ /**
+ * Octokit endpoint API, see {@link https://github.com/octokit/endpoint.js|@octokit/endpoint}
+ */
+ endpoint: EndpointInterface;
+}
diff --git a/node_modules/@octokit/types/dist-types/RequestMethod.d.ts b/node_modules/@octokit/types/dist-types/RequestMethod.d.ts
new file mode 100644
index 0000000..e999c8d
--- /dev/null
+++ b/node_modules/@octokit/types/dist-types/RequestMethod.d.ts
@@ -0,0 +1,4 @@
+/**
+ * HTTP Verb supported by GitHub's REST API
+ */
+export declare type RequestMethod = "DELETE" | "GET" | "HEAD" | "PATCH" | "POST" | "PUT";
diff --git a/node_modules/@octokit/types/dist-types/RequestOptions.d.ts b/node_modules/@octokit/types/dist-types/RequestOptions.d.ts
new file mode 100644
index 0000000..97e2181
--- /dev/null
+++ b/node_modules/@octokit/types/dist-types/RequestOptions.d.ts
@@ -0,0 +1,14 @@
+import { RequestHeaders } from "./RequestHeaders";
+import { RequestMethod } from "./RequestMethod";
+import { RequestRequestOptions } from "./RequestRequestOptions";
+import { Url } from "./Url";
+/**
+ * Generic request options as they are returned by the `endpoint()` method
+ */
+export declare type RequestOptions = {
+ method: RequestMethod;
+ url: Url;
+ headers: RequestHeaders;
+ body?: any;
+ request?: RequestRequestOptions;
+};
diff --git a/node_modules/@octokit/types/dist-types/RequestParameters.d.ts b/node_modules/@octokit/types/dist-types/RequestParameters.d.ts
new file mode 100644
index 0000000..b056a0e
--- /dev/null
+++ b/node_modules/@octokit/types/dist-types/RequestParameters.d.ts
@@ -0,0 +1,45 @@
+import { RequestRequestOptions } from "./RequestRequestOptions";
+import { RequestHeaders } from "./RequestHeaders";
+import { Url } from "./Url";
+/**
+ * Parameters that can be passed into `request(route, parameters)` or `endpoint(route, parameters)` methods
+ */
+export declare type RequestParameters = {
+ /**
+ * Base URL to be used when a relative URL is passed, such as `/orgs/{org}`.
+ * If `baseUrl` is `https://enterprise.acme-inc.com/api/v3`, then the request
+ * will be sent to `https://enterprise.acme-inc.com/api/v3/orgs/{org}`.
+ */
+ baseUrl?: Url;
+ /**
+ * HTTP headers. Use lowercase keys.
+ */
+ headers?: RequestHeaders;
+ /**
+ * Media type options, see {@link https://developer.github.com/v3/media/|GitHub Developer Guide}
+ */
+ mediaType?: {
+ /**
+ * `json` by default. Can be `raw`, `text`, `html`, `full`, `diff`, `patch`, `sha`, `base64`. Depending on endpoint
+ */
+ format?: string;
+ /**
+ * Custom media type names of {@link https://developer.github.com/v3/media/|API Previews} without the `-preview` suffix.
+ * Example for single preview: `['squirrel-girl']`.
+ * Example for multiple previews: `['squirrel-girl', 'mister-fantastic']`.
+ */
+ previews?: string[];
+ };
+ /**
+ * Pass custom meta information for the request. The `request` object will be returned as is.
+ */
+ request?: RequestRequestOptions;
+ /**
+ * Any additional parameter will be passed as follows
+ * 1. URL parameter if `':parameter'` or `{parameter}` is part of `url`
+ * 2. Query parameter if `method` is `'GET'` or `'HEAD'`
+ * 3. Request body if `parameter` is `'data'`
+ * 4. JSON in the request body in the form of `body[parameter]` unless `parameter` key is `'data'`
+ */
+ [parameter: string]: unknown;
+};
diff --git a/node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts b/node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts
new file mode 100644
index 0000000..8f5c43a
--- /dev/null
+++ b/node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts
@@ -0,0 +1,26 @@
+import { Fetch } from "./Fetch";
+import { Signal } from "./Signal";
+/**
+ * Octokit-specific request options which are ignored for the actual request, but can be used by Octokit or plugins to manipulate how the request is sent or how a response is handled
+ */
+export declare type RequestRequestOptions = {
+ /**
+ * Node only. Useful for custom proxy, certificate, or dns lookup.
+ *
+ * @see https://nodejs.org/api/http.html#http_class_http_agent
+ */
+ agent?: unknown;
+ /**
+ * Custom replacement for built-in fetch method. Useful for testing or request hooks.
+ */
+ fetch?: Fetch;
+ /**
+ * Use an `AbortController` instance to cancel a request. In node you can only cancel streamed requests.
+ */
+ signal?: Signal;
+ /**
+ * Node only. Request/response timeout in ms, it resets on redirect. 0 to disable (OS limit applies). `options.request.signal` is recommended instead.
+ */
+ timeout?: number;
+ [option: string]: any;
+};
diff --git a/node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts b/node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts
new file mode 100644
index 0000000..c8fbe43
--- /dev/null
+++ b/node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts
@@ -0,0 +1,20 @@
+export declare type ResponseHeaders = {
+ "cache-control"?: string;
+ "content-length"?: number;
+ "content-type"?: string;
+ date?: string;
+ etag?: string;
+ "last-modified"?: string;
+ link?: string;
+ location?: string;
+ server?: string;
+ status?: string;
+ vary?: string;
+ "x-github-mediatype"?: string;
+ "x-github-request-id"?: string;
+ "x-oauth-scopes"?: string;
+ "x-ratelimit-limit"?: string;
+ "x-ratelimit-remaining"?: string;
+ "x-ratelimit-reset"?: string;
+ [header: string]: string | number | undefined;
+};
diff --git a/node_modules/@octokit/types/dist-types/Route.d.ts b/node_modules/@octokit/types/dist-types/Route.d.ts
new file mode 100644
index 0000000..dcaac75
--- /dev/null
+++ b/node_modules/@octokit/types/dist-types/Route.d.ts
@@ -0,0 +1,4 @@
+/**
+ * String consisting of an optional HTTP method and relative path or absolute URL. Examples: `'/orgs/{org}'`, `'PUT /orgs/{org}'`, `GET https://example.com/foo/bar`
+ */
+export declare type Route = string;
diff --git a/node_modules/@octokit/types/dist-types/Signal.d.ts b/node_modules/@octokit/types/dist-types/Signal.d.ts
new file mode 100644
index 0000000..4ebcf24
--- /dev/null
+++ b/node_modules/@octokit/types/dist-types/Signal.d.ts
@@ -0,0 +1,6 @@
+/**
+ * Abort signal
+ *
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal
+ */
+export declare type Signal = any;
diff --git a/node_modules/@octokit/types/dist-types/StrategyInterface.d.ts b/node_modules/@octokit/types/dist-types/StrategyInterface.d.ts
new file mode 100644
index 0000000..405cbd2
--- /dev/null
+++ b/node_modules/@octokit/types/dist-types/StrategyInterface.d.ts
@@ -0,0 +1,4 @@
+import { AuthInterface } from "./AuthInterface";
+export interface StrategyInterface {
+ (...args: StrategyOptions): AuthInterface;
+}
diff --git a/node_modules/@octokit/types/dist-types/Url.d.ts b/node_modules/@octokit/types/dist-types/Url.d.ts
new file mode 100644
index 0000000..3e69916
--- /dev/null
+++ b/node_modules/@octokit/types/dist-types/Url.d.ts
@@ -0,0 +1,4 @@
+/**
+ * Relative or absolute URL. Examples: `'/orgs/{org}'`, `https://example.com/foo/bar`
+ */
+export declare type Url = string;
diff --git a/node_modules/@octokit/types/dist-types/VERSION.d.ts b/node_modules/@octokit/types/dist-types/VERSION.d.ts
new file mode 100644
index 0000000..aaabf77
--- /dev/null
+++ b/node_modules/@octokit/types/dist-types/VERSION.d.ts
@@ -0,0 +1 @@
+export declare const VERSION = "6.12.2";
diff --git a/node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts b/node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts
new file mode 100644
index 0000000..0319dc0
--- /dev/null
+++ b/node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts
@@ -0,0 +1,3150 @@
+import { paths } from "@octokit/openapi-types";
+import { OctokitResponse } from "../OctokitResponse";
+import { RequestHeaders } from "../RequestHeaders";
+import { RequestRequestOptions } from "../RequestRequestOptions";
+declare type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
+declare type ExtractParameters = "parameters" extends keyof T ? UnionToIntersection<{
+ [K in keyof T["parameters"]]: T["parameters"][K];
+}[keyof T["parameters"]]> : {};
+declare type ExtractRequestBody = "requestBody" extends keyof T ? "content" extends keyof T["requestBody"] ? "application/json" extends keyof T["requestBody"]["content"] ? T["requestBody"]["content"]["application/json"] : {
+ data: {
+ [K in keyof T["requestBody"]["content"]]: T["requestBody"]["content"][K];
+ }[keyof T["requestBody"]["content"]];
+} : "application/json" extends keyof T["requestBody"] ? T["requestBody"]["application/json"] : {
+ data: {
+ [K in keyof T["requestBody"]]: T["requestBody"][K];
+ }[keyof T["requestBody"]];
+} : {};
+declare type ToOctokitParameters = ExtractParameters & ExtractRequestBody;
+declare type RequiredPreview = T extends string ? {
+ mediaType: {
+ previews: [T, ...string[]];
+ };
+} : {};
+declare type Operation = {
+ parameters: ToOctokitParameters & RequiredPreview;
+ request: {
+ method: Method extends keyof MethodsMap ? MethodsMap[Method] : never;
+ url: Url;
+ headers: RequestHeaders;
+ request: RequestRequestOptions;
+ };
+ response: Url extends keyof EndpointsWithMissingRequiredResponseDataSchema ? Method extends EndpointsWithMissingRequiredResponseDataSchema[Url] ? DeepRequired> : ExtractOctokitResponse : ExtractOctokitResponse;
+};
+declare type MethodsMap = {
+ delete: "DELETE";
+ get: "GET";
+ patch: "PATCH";
+ post: "POST";
+ put: "PUT";
+};
+declare type SuccessStatuses = 200 | 201 | 202 | 204;
+declare type RedirectStatuses = 301 | 302;
+declare type EmptyResponseStatuses = 201 | 204;
+declare type KnownJsonResponseTypes = "application/json" | "application/scim+json" | "text/html";
+declare type SuccessResponseDataType = {
+ [K in SuccessStatuses & keyof Responses]: GetContentKeyIfPresent extends never ? never : OctokitResponse, K>;
+}[SuccessStatuses & keyof Responses];
+declare type RedirectResponseDataType = {
+ [K in RedirectStatuses & keyof Responses]: OctokitResponse;
+}[RedirectStatuses & keyof Responses];
+declare type EmptyResponseDataType = {
+ [K in EmptyResponseStatuses & keyof Responses]: OctokitResponse;
+}[EmptyResponseStatuses & keyof Responses];
+declare type GetContentKeyIfPresent = "content" extends keyof T ? DataType : DataType;
+declare type DataType = {
+ [K in KnownJsonResponseTypes & keyof T]: T[K];
+}[KnownJsonResponseTypes & keyof T];
+declare type ExtractOctokitResponse = "responses" extends keyof R ? SuccessResponseDataType extends never ? RedirectResponseDataType extends never ? EmptyResponseDataType : RedirectResponseDataType : SuccessResponseDataType : unknown;
+declare type EndpointsWithMissingRequiredResponseDataSchema = {
+ "/app/hook/config": "get" | "patch";
+ "/app/installations/{installation_id}/access_tokens": "post";
+ "/emojis": "get";
+ "/enterprises/{enterprise}/actions/permissions": "get";
+ "/enterprises/{enterprise}/actions/permissions/organizations": "get";
+ "/enterprises/{enterprise}/actions/permissions/selected-actions": "get";
+ "/enterprises/{enterprise}/actions/runner-groups": "get" | "post";
+ "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}": "get" | "patch";
+ "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations": "get";
+ "/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners": "get";
+ "/enterprises/{enterprise}/actions/runners": "get";
+ "/enterprises/{enterprise}/actions/runners/downloads": "get";
+ "/enterprises/{enterprise}/settings/billing/actions": "get";
+ "/enterprises/{enterprise}/settings/billing/packages": "get";
+ "/enterprises/{enterprise}/settings/billing/shared-storage": "get";
+ "/installation/repositories": "get";
+ "/notifications": "get";
+ "/notifications/threads/{thread_id}": "get";
+ "/orgs/{org}/actions/permissions": "get";
+ "/orgs/{org}/actions/permissions/repositories": "get";
+ "/orgs/{org}/actions/permissions/selected-actions": "get";
+ "/orgs/{org}/actions/runner-groups": "get" | "post";
+ "/orgs/{org}/actions/runner-groups/{runner_group_id}": "get" | "patch";
+ "/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories": "get";
+ "/orgs/{org}/actions/runner-groups/{runner_group_id}/runners": "get";
+ "/orgs/{org}/actions/runners": "get";
+ "/orgs/{org}/actions/runners/downloads": "get";
+ "/orgs/{org}/actions/secrets": "get";
+ "/orgs/{org}/actions/secrets/{secret_name}/repositories": "get";
+ "/orgs/{org}/hooks/{hook_id}/config": "get" | "patch";
+ "/orgs/{org}/installations": "get";
+ "/orgs/{org}/invitations": "get" | "post";
+ "/orgs/{org}/settings/billing/actions": "get";
+ "/orgs/{org}/settings/billing/packages": "get";
+ "/orgs/{org}/settings/billing/shared-storage": "get";
+ "/orgs/{org}/team-sync/groups": "get";
+ "/orgs/{org}/teams/{team_slug}/invitations": "get";
+ "/orgs/{org}/teams/{team_slug}/projects": "get";
+ "/orgs/{org}/teams/{team_slug}/projects/{project_id}": "get";
+ "/orgs/{org}/teams/{team_slug}/team-sync/group-mappings": "get" | "patch";
+ "/projects/columns/cards/{card_id}/moves": "post";
+ "/projects/columns/{column_id}/moves": "post";
+ "/repos/{owner}/{repo}/actions/artifacts": "get";
+ "/repos/{owner}/{repo}/actions/permissions": "get";
+ "/repos/{owner}/{repo}/actions/permissions/selected-actions": "get";
+ "/repos/{owner}/{repo}/actions/runners": "get";
+ "/repos/{owner}/{repo}/actions/runners/downloads": "get";
+ "/repos/{owner}/{repo}/actions/runs": "get";
+ "/repos/{owner}/{repo}/actions/runs/{run_id}/artifacts": "get";
+ "/repos/{owner}/{repo}/actions/runs/{run_id}/jobs": "get";
+ "/repos/{owner}/{repo}/actions/runs/{run_id}/timing": "get";
+ "/repos/{owner}/{repo}/actions/secrets": "get";
+ "/repos/{owner}/{repo}/actions/workflows": "get";
+ "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs": "get";
+ "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing": "get";
+ "/repos/{owner}/{repo}/check-suites/preferences": "patch";
+ "/repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs": "get";
+ "/repos/{owner}/{repo}/code-scanning/alerts": "get";
+ "/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}": "get" | "patch";
+ "/repos/{owner}/{repo}/code-scanning/analyses": "get";
+ "/repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head": "get";
+ "/repos/{owner}/{repo}/commits/{ref}/check-runs": "get";
+ "/repos/{owner}/{repo}/commits/{ref}/check-suites": "get";
+ "/repos/{owner}/{repo}/commits/{ref}/statuses": "get";
+ "/repos/{owner}/{repo}/contents/{path}": "put" | "delete";
+ "/repos/{owner}/{repo}/git/blobs": "post";
+ "/repos/{owner}/{repo}/git/commits": "post";
+ "/repos/{owner}/{repo}/git/commits/{commit_sha}": "get";
+ "/repos/{owner}/{repo}/git/matching-refs/{ref}": "get";
+ "/repos/{owner}/{repo}/git/ref/{ref}": "get";
+ "/repos/{owner}/{repo}/git/refs": "post";
+ "/repos/{owner}/{repo}/git/refs/{ref}": "patch";
+ "/repos/{owner}/{repo}/hooks/{hook_id}/config": "get" | "patch";
+ "/repos/{owner}/{repo}/issues/{issue_number}/events": "get";
+ "/repos/{owner}/{repo}/issues/{issue_number}/timeline": "get";
+ "/repos/{owner}/{repo}/keys": "get" | "post";
+ "/repos/{owner}/{repo}/keys/{key_id}": "get";
+ "/repos/{owner}/{repo}/languages": "get";
+ "/repos/{owner}/{repo}/notifications": "get";
+ "/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": "get";
+ "/repos/{owner}/{repo}/stats/participation": "get";
+ "/repos/{owner}/{repo}/statuses/{sha}": "post";
+ "/repos/{owner}/{repo}/topics": "get" | "put";
+ "/scim/v2/enterprises/{enterprise}/Groups": "get" | "post";
+ "/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}": "get" | "put" | "patch";
+ "/scim/v2/enterprises/{enterprise}/Users": "get" | "post";
+ "/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}": "get" | "put" | "patch";
+ "/search/code": "get";
+ "/search/commits": "get";
+ "/search/issues": "get";
+ "/search/labels": "get";
+ "/search/repositories": "get";
+ "/search/topics": "get";
+ "/search/users": "get";
+ "/teams/{team_id}/invitations": "get";
+ "/teams/{team_id}/projects": "get";
+ "/teams/{team_id}/projects/{project_id}": "get";
+ "/teams/{team_id}/team-sync/group-mappings": "get" | "patch";
+ "/user/installations": "get";
+ "/user/installations/{installation_id}/repositories": "get";
+ "/user/keys": "get" | "post";
+ "/user/keys/{key_id}": "get";
+ "/users/{username}/settings/billing/actions": "get";
+ "/users/{username}/settings/billing/packages": "get";
+ "/users/{username}/settings/billing/shared-storage": "get";
+};
+declare type NotNill = T extends null | undefined ? never : T;
+declare type Primitive = undefined | null | boolean | string | number | Function;
+declare type DeepRequired = T extends Primitive ? NotNill : {
+ [P in keyof T]-?: T[P] extends Array ? Array> : T[P] extends ReadonlyArray ? DeepRequired : DeepRequired;
+};
+export interface Endpoints {
+ /**
+ * @see https://docs.github.com/rest/reference/apps/#delete-an-installation-for-the-authenticated-app
+ */
+ "DELETE /app/installations/{installation_id}": Operation<"/app/installations/{installation_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps/#unsuspend-an-app-installation
+ */
+ "DELETE /app/installations/{installation_id}/suspended": Operation<"/app/installations/{installation_id}/suspended", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/oauth-authorizations#delete-a-grant
+ */
+ "DELETE /applications/grants/{grant_id}": Operation<"/applications/grants/{grant_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#delete-an-app-authorization
+ */
+ "DELETE /applications/{client_id}/grant": Operation<"/applications/{client_id}/grant", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#revoke-a-grant-for-an-application
+ */
+ "DELETE /applications/{client_id}/grants/{access_token}": Operation<"/applications/{client_id}/grants/{access_token}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#delete-an-app-token
+ */
+ "DELETE /applications/{client_id}/token": Operation<"/applications/{client_id}/token", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#revoke-an-authorization-for-an-application
+ */
+ "DELETE /applications/{client_id}/tokens/{access_token}": Operation<"/applications/{client_id}/tokens/{access_token}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/oauth-authorizations#delete-an-authorization
+ */
+ "DELETE /authorizations/{authorization_id}": Operation<"/authorizations/{authorization_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#disable-a-selected-organization-for-github-actions-in-an-enterprise
+ */
+ "DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}": Operation<"/enterprises/{enterprise}/actions/permissions/organizations/{org_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#delete-a-self-hosted-runner-group-from-an-enterprise
+ */
+ "DELETE /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#remove-organization-access-to-a-self-hosted-runner-group-in-an-enterprise
+ */
+ "DELETE /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations/{org_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations/{org_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#remove-a-self-hosted-runner-from-a-group-for-an-enterprise
+ */
+ "DELETE /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners/{runner_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#delete-self-hosted-runner-from-an-enterprise
+ */
+ "DELETE /enterprises/{enterprise}/actions/runners/{runner_id}": Operation<"/enterprises/{enterprise}/actions/runners/{runner_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/gists/#delete-a-gist
+ */
+ "DELETE /gists/{gist_id}": Operation<"/gists/{gist_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/gists#delete-a-gist-comment
+ */
+ "DELETE /gists/{gist_id}/comments/{comment_id}": Operation<"/gists/{gist_id}/comments/{comment_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/gists/#unstar-a-gist
+ */
+ "DELETE /gists/{gist_id}/star": Operation<"/gists/{gist_id}/star", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#revoke-an-installation-access-token
+ */
+ "DELETE /installation/token": Operation<"/installation/token", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#delete-a-thread-subscription
+ */
+ "DELETE /notifications/threads/{thread_id}/subscription": Operation<"/notifications/threads/{thread_id}/subscription", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#disable-a-selected-repository-for-github-actions-in-an-organization
+ */
+ "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}": Operation<"/orgs/{org}/actions/permissions/repositories/{repository_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#delete-a-self-hosted-runner-group-from-an-organization
+ */
+ "DELETE /orgs/{org}/actions/runner-groups/{runner_group_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#remove-repository-access-to-a-self-hosted-runner-group-in-an-organization
+ */
+ "DELETE /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#remove-a-self-hosted-runner-from-a-group-for-an-organization
+ */
+ "DELETE /orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#delete-a-self-hosted-runner-from-an-organization
+ */
+ "DELETE /orgs/{org}/actions/runners/{runner_id}": Operation<"/orgs/{org}/actions/runners/{runner_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#delete-an-organization-secret
+ */
+ "DELETE /orgs/{org}/actions/secrets/{secret_name}": Operation<"/orgs/{org}/actions/secrets/{secret_name}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#remove-selected-repository-from-an-organization-secret
+ */
+ "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#unblock-a-user-from-an-organization
+ */
+ "DELETE /orgs/{org}/blocks/{username}": Operation<"/orgs/{org}/blocks/{username}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs/#remove-a-saml-sso-authorization-for-an-organization
+ */
+ "DELETE /orgs/{org}/credential-authorizations/{credential_id}": Operation<"/orgs/{org}/credential-authorizations/{credential_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#delete-an-organization-webhook
+ */
+ "DELETE /orgs/{org}/hooks/{hook_id}": Operation<"/orgs/{org}/hooks/{hook_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/interactions#remove-interaction-restrictions-for-an-organization
+ */
+ "DELETE /orgs/{org}/interaction-limits": Operation<"/orgs/{org}/interaction-limits", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#cancel-an-organization-invitation
+ */
+ "DELETE /orgs/{org}/invitations/{invitation_id}": Operation<"/orgs/{org}/invitations/{invitation_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#remove-an-organization-member
+ */
+ "DELETE /orgs/{org}/members/{username}": Operation<"/orgs/{org}/members/{username}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#remove-organization-membership-for-a-user
+ */
+ "DELETE /orgs/{org}/memberships/{username}": Operation<"/orgs/{org}/memberships/{username}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#delete-an-organization-migration-archive
+ */
+ "DELETE /orgs/{org}/migrations/{migration_id}/archive": Operation<"/orgs/{org}/migrations/{migration_id}/archive", "delete", "wyandotte">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#unlock-an-organization-repository
+ */
+ "DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock": Operation<"/orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock", "delete", "wyandotte">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#remove-outside-collaborator-from-an-organization
+ */
+ "DELETE /orgs/{org}/outside_collaborators/{username}": Operation<"/orgs/{org}/outside_collaborators/{username}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/packages#delete-a-package-for-an-organization
+ */
+ "DELETE /orgs/{org}/packages/{package_type}/{package_name}": Operation<"/orgs/{org}/packages/{package_type}/{package_name}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/packages#delete-a-package-version-for-an-organization
+ */
+ "DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}": Operation<"/orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#remove-public-organization-membership-for-the-authenticated-user
+ */
+ "DELETE /orgs/{org}/public_members/{username}": Operation<"/orgs/{org}/public_members/{username}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#delete-a-team
+ */
+ "DELETE /orgs/{org}/teams/{team_slug}": Operation<"/orgs/{org}/teams/{team_slug}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#delete-a-discussion
+ */
+ "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#delete-a-discussion-comment
+ */
+ "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#delete-team-discussion-comment-reaction
+ */
+ "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}", "delete", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#delete-team-discussion-reaction
+ */
+ "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}", "delete", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#remove-team-membership-for-a-user
+ */
+ "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}": Operation<"/orgs/{org}/teams/{team_slug}/memberships/{username}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#remove-a-project-from-a-team
+ */
+ "DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}": Operation<"/orgs/{org}/teams/{team_slug}/projects/{project_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#remove-a-repository-from-a-team
+ */
+ "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}": Operation<"/orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects#delete-a-project-card
+ */
+ "DELETE /projects/columns/cards/{card_id}": Operation<"/projects/columns/cards/{card_id}", "delete", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects#delete-a-project-column
+ */
+ "DELETE /projects/columns/{column_id}": Operation<"/projects/columns/{column_id}", "delete", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects/#delete-a-project
+ */
+ "DELETE /projects/{project_id}": Operation<"/projects/{project_id}", "delete", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects#remove-project-collaborator
+ */
+ "DELETE /projects/{project_id}/collaborators/{username}": Operation<"/projects/{project_id}/collaborators/{username}", "delete", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#delete-a-reaction-legacy
+ */
+ "DELETE /reactions/{reaction_id}": Operation<"/reactions/{reaction_id}", "delete", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#delete-a-repository
+ */
+ "DELETE /repos/{owner}/{repo}": Operation<"/repos/{owner}/{repo}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#delete-an-artifact
+ */
+ "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}": Operation<"/repos/{owner}/{repo}/actions/artifacts/{artifact_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#delete-a-self-hosted-runner-from-a-repository
+ */
+ "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#delete-a-workflow-run
+ */
+ "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#delete-workflow-run-logs
+ */
+ "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/logs", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#delete-a-repository-secret
+ */
+ "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/actions/secrets/{secret_name}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#disable-automated-security-fixes
+ */
+ "DELETE /repos/{owner}/{repo}/automated-security-fixes": Operation<"/repos/{owner}/{repo}/automated-security-fixes", "delete", "london">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#delete-branch-protection
+ */
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#delete-admin-branch-protection
+ */
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#delete-pull-request-review-protection
+ */
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#delete-commit-signature-protection
+ */
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", "delete", "zzzax">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#remove-status-check-protection
+ */
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#remove-status-check-contexts
+ */
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#delete-access-restrictions
+ */
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#remove-app-access-restrictions
+ */
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#remove-team-access-restrictions
+ */
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#remove-user-access-restrictions
+ */
+ "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/code-scanning#delete-a-code-scanning-analysis-from-a-repository
+ */
+ "DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}": Operation<"/repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#remove-a-repository-collaborator
+ */
+ "DELETE /repos/{owner}/{repo}/collaborators/{username}": Operation<"/repos/{owner}/{repo}/collaborators/{username}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#delete-a-commit-comment
+ */
+ "DELETE /repos/{owner}/{repo}/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/comments/{comment_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#delete-a-commit-comment-reaction
+ */
+ "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}", "delete", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#delete-a-file
+ */
+ "DELETE /repos/{owner}/{repo}/contents/{path}": Operation<"/repos/{owner}/{repo}/contents/{path}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#delete-a-deployment
+ */
+ "DELETE /repos/{owner}/{repo}/deployments/{deployment_id}": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#delete-an-environment
+ */
+ "DELETE /repos/{owner}/{repo}/environments/{environment_name}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/git#delete-a-reference
+ */
+ "DELETE /repos/{owner}/{repo}/git/refs/{ref}": Operation<"/repos/{owner}/{repo}/git/refs/{ref}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#delete-a-repository-webhook
+ */
+ "DELETE /repos/{owner}/{repo}/hooks/{hook_id}": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#cancel-an-import
+ */
+ "DELETE /repos/{owner}/{repo}/import": Operation<"/repos/{owner}/{repo}/import", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/interactions#remove-interaction-restrictions-for-a-repository
+ */
+ "DELETE /repos/{owner}/{repo}/interaction-limits": Operation<"/repos/{owner}/{repo}/interaction-limits", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#delete-a-repository-invitation
+ */
+ "DELETE /repos/{owner}/{repo}/invitations/{invitation_id}": Operation<"/repos/{owner}/{repo}/invitations/{invitation_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#delete-an-issue-comment
+ */
+ "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#delete-an-issue-comment-reaction
+ */
+ "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}", "delete", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#remove-assignees-from-an-issue
+ */
+ "DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/assignees", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#remove-all-labels-from-an-issue
+ */
+ "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#remove-a-label-from-an-issue
+ */
+ "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels/{name}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues/#unlock-an-issue
+ */
+ "DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/lock", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#delete-an-issue-reaction
+ */
+ "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}", "delete", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#delete-a-deploy-key
+ */
+ "DELETE /repos/{owner}/{repo}/keys/{key_id}": Operation<"/repos/{owner}/{repo}/keys/{key_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#delete-a-label
+ */
+ "DELETE /repos/{owner}/{repo}/labels/{name}": Operation<"/repos/{owner}/{repo}/labels/{name}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#delete-a-milestone
+ */
+ "DELETE /repos/{owner}/{repo}/milestones/{milestone_number}": Operation<"/repos/{owner}/{repo}/milestones/{milestone_number}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#delete-a-github-pages-site
+ */
+ "DELETE /repos/{owner}/{repo}/pages": Operation<"/repos/{owner}/{repo}/pages", "delete", "switcheroo">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls#delete-a-review-comment-for-a-pull-request
+ */
+ "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#delete-a-pull-request-comment-reaction
+ */
+ "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}", "delete", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls#remove-requested-reviewers-from-a-pull-request
+ */
+ "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls#delete-a-pending-review-for-a-pull-request
+ */
+ "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#delete-a-release-asset
+ */
+ "DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}": Operation<"/repos/{owner}/{repo}/releases/assets/{asset_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#delete-a-release
+ */
+ "DELETE /repos/{owner}/{repo}/releases/{release_id}": Operation<"/repos/{owner}/{repo}/releases/{release_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#delete-a-repository-subscription
+ */
+ "DELETE /repos/{owner}/{repo}/subscription": Operation<"/repos/{owner}/{repo}/subscription", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#disable-vulnerability-alerts
+ */
+ "DELETE /repos/{owner}/{repo}/vulnerability-alerts": Operation<"/repos/{owner}/{repo}/vulnerability-alerts", "delete", "dorian">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#delete-an-environment-secret
+ */
+ "DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}": Operation<"/repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#delete-a-scim-group-from-an-enterprise
+ */
+ "DELETE /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}": Operation<"/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#delete-a-scim-user-from-an-enterprise
+ */
+ "DELETE /scim/v2/enterprises/{enterprise}/Users/{scim_user_id}": Operation<"/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/scim/#delete-a-scim-user-from-an-organization
+ */
+ "DELETE /scim/v2/organizations/{org}/Users/{scim_user_id}": Operation<"/scim/v2/organizations/{org}/Users/{scim_user_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#delete-a-team-legacy
+ */
+ "DELETE /teams/{team_id}": Operation<"/teams/{team_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#delete-a-discussion-legacy
+ */
+ "DELETE /teams/{team_id}/discussions/{discussion_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#delete-a-discussion-comment-legacy
+ */
+ "DELETE /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#remove-team-member-legacy
+ */
+ "DELETE /teams/{team_id}/members/{username}": Operation<"/teams/{team_id}/members/{username}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#remove-team-membership-for-a-user-legacy
+ */
+ "DELETE /teams/{team_id}/memberships/{username}": Operation<"/teams/{team_id}/memberships/{username}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#remove-a-project-from-a-team-legacy
+ */
+ "DELETE /teams/{team_id}/projects/{project_id}": Operation<"/teams/{team_id}/projects/{project_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#remove-a-repository-from-a-team-legacy
+ */
+ "DELETE /teams/{team_id}/repos/{owner}/{repo}": Operation<"/teams/{team_id}/repos/{owner}/{repo}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#unblock-a-user
+ */
+ "DELETE /user/blocks/{username}": Operation<"/user/blocks/{username}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#delete-an-email-address-for-the-authenticated-user
+ */
+ "DELETE /user/emails": Operation<"/user/emails", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#unfollow-a-user
+ */
+ "DELETE /user/following/{username}": Operation<"/user/following/{username}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#delete-a-gpg-key-for-the-authenticated-user
+ */
+ "DELETE /user/gpg_keys/{gpg_key_id}": Operation<"/user/gpg_keys/{gpg_key_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#remove-a-repository-from-an-app-installation
+ */
+ "DELETE /user/installations/{installation_id}/repositories/{repository_id}": Operation<"/user/installations/{installation_id}/repositories/{repository_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/interactions#remove-interaction-restrictions-from-your-public-repositories
+ */
+ "DELETE /user/interaction-limits": Operation<"/user/interaction-limits", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#delete-a-public-ssh-key-for-the-authenticated-user
+ */
+ "DELETE /user/keys/{key_id}": Operation<"/user/keys/{key_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#delete-a-user-migration-archive
+ */
+ "DELETE /user/migrations/{migration_id}/archive": Operation<"/user/migrations/{migration_id}/archive", "delete", "wyandotte">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#unlock-a-user-repository
+ */
+ "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock": Operation<"/user/migrations/{migration_id}/repos/{repo_name}/lock", "delete", "wyandotte">;
+ /**
+ * @see https://docs.github.com/rest/reference/packages#delete-a-package-for-the-authenticated-user
+ */
+ "DELETE /user/packages/{package_type}/{package_name}": Operation<"/user/packages/{package_type}/{package_name}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/packages#delete-a-package-version-for-the-authenticated-user
+ */
+ "DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}": Operation<"/user/packages/{package_type}/{package_name}/versions/{package_version_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#decline-a-repository-invitation
+ */
+ "DELETE /user/repository_invitations/{invitation_id}": Operation<"/user/repository_invitations/{invitation_id}", "delete">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#unstar-a-repository-for-the-authenticated-user
+ */
+ "DELETE /user/starred/{owner}/{repo}": Operation<"/user/starred/{owner}/{repo}", "delete">;
+ /**
+ * @see
+ */
+ "GET /": Operation<"/", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps/#get-the-authenticated-app
+ */
+ "GET /app": Operation<"/app", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#get-a-webhook-configuration-for-an-app
+ */
+ "GET /app/hook/config": Operation<"/app/hook/config", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps/#list-installations-for-the-authenticated-app
+ */
+ "GET /app/installations": Operation<"/app/installations", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps/#get-an-installation-for-the-authenticated-app
+ */
+ "GET /app/installations/{installation_id}": Operation<"/app/installations/{installation_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/oauth-authorizations#list-your-grants
+ */
+ "GET /applications/grants": Operation<"/applications/grants", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/oauth-authorizations#get-a-single-grant
+ */
+ "GET /applications/grants/{grant_id}": Operation<"/applications/grants/{grant_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#check-an-authorization
+ */
+ "GET /applications/{client_id}/tokens/{access_token}": Operation<"/applications/{client_id}/tokens/{access_token}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps/#get-an-app
+ */
+ "GET /apps/{app_slug}": Operation<"/apps/{app_slug}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/oauth-authorizations#list-your-authorizations
+ */
+ "GET /authorizations": Operation<"/authorizations", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/oauth-authorizations#get-a-single-authorization
+ */
+ "GET /authorizations/{authorization_id}": Operation<"/authorizations/{authorization_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/codes_of_conduct/#get-all-codes-of-conduct
+ */
+ "GET /codes_of_conduct": Operation<"/codes_of_conduct", "get", "scarlet-witch">;
+ /**
+ * @see https://docs.github.com/rest/reference/codes_of_conduct/#get-a-code-of-conduct
+ */
+ "GET /codes_of_conduct/{key}": Operation<"/codes_of_conduct/{key}", "get", "scarlet-witch">;
+ /**
+ * @see https://docs.github.com/rest/reference/emojis/#get-emojis
+ */
+ "GET /emojis": Operation<"/emojis", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#get-github-actions-permissions-for-an-enterprise
+ */
+ "GET /enterprises/{enterprise}/actions/permissions": Operation<"/enterprises/{enterprise}/actions/permissions", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#list-selected-organizations-enabled-for-github-actions-in-an-enterprise
+ */
+ "GET /enterprises/{enterprise}/actions/permissions/organizations": Operation<"/enterprises/{enterprise}/actions/permissions/organizations", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#get-allowed-actions-for-an-enterprise
+ */
+ "GET /enterprises/{enterprise}/actions/permissions/selected-actions": Operation<"/enterprises/{enterprise}/actions/permissions/selected-actions", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#list-self-hosted-runner-groups-for-an-enterprise
+ */
+ "GET /enterprises/{enterprise}/actions/runner-groups": Operation<"/enterprises/{enterprise}/actions/runner-groups", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#get-a-self-hosted-runner-group-for-an-enterprise
+ */
+ "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#list-organization-access-to-a-self-hosted-runner-group-in-a-enterprise
+ */
+ "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#list-self-hosted-runners-in-a-group-for-an-enterprise
+ */
+ "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#list-self-hosted-runners-for-an-enterprise
+ */
+ "GET /enterprises/{enterprise}/actions/runners": Operation<"/enterprises/{enterprise}/actions/runners", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#list-runner-applications-for-an-enterprise
+ */
+ "GET /enterprises/{enterprise}/actions/runners/downloads": Operation<"/enterprises/{enterprise}/actions/runners/downloads", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#get-a-self-hosted-runner-for-an-enterprise
+ */
+ "GET /enterprises/{enterprise}/actions/runners/{runner_id}": Operation<"/enterprises/{enterprise}/actions/runners/{runner_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#get-the-audit-log-for-an-enterprise
+ */
+ "GET /enterprises/{enterprise}/audit-log": Operation<"/enterprises/{enterprise}/audit-log", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/billing/#get-github-actions-billing-for-an-enterprise
+ */
+ "GET /enterprises/{enterprise}/settings/billing/actions": Operation<"/enterprises/{enterprise}/settings/billing/actions", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/billing/#get-github-packages-billing-for-an-enterprise
+ */
+ "GET /enterprises/{enterprise}/settings/billing/packages": Operation<"/enterprises/{enterprise}/settings/billing/packages", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/billing/#get-shared-storage-billing-for-an-enterprise
+ */
+ "GET /enterprises/{enterprise}/settings/billing/shared-storage": Operation<"/enterprises/{enterprise}/settings/billing/shared-storage", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#list-public-events
+ */
+ "GET /events": Operation<"/events", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#get-feeds
+ */
+ "GET /feeds": Operation<"/feeds", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/gists/#list-gists-for-the-authenticated-user
+ */
+ "GET /gists": Operation<"/gists", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/gists/#list-public-gists
+ */
+ "GET /gists/public": Operation<"/gists/public", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/gists/#list-starred-gists
+ */
+ "GET /gists/starred": Operation<"/gists/starred", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/gists/#get-a-gist
+ */
+ "GET /gists/{gist_id}": Operation<"/gists/{gist_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/gists#list-gist-comments
+ */
+ "GET /gists/{gist_id}/comments": Operation<"/gists/{gist_id}/comments", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/gists#get-a-gist-comment
+ */
+ "GET /gists/{gist_id}/comments/{comment_id}": Operation<"/gists/{gist_id}/comments/{comment_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/gists/#list-gist-commits
+ */
+ "GET /gists/{gist_id}/commits": Operation<"/gists/{gist_id}/commits", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/gists/#list-gist-forks
+ */
+ "GET /gists/{gist_id}/forks": Operation<"/gists/{gist_id}/forks", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/gists/#check-if-a-gist-is-starred
+ */
+ "GET /gists/{gist_id}/star": Operation<"/gists/{gist_id}/star", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/gists/#get-a-gist-revision
+ */
+ "GET /gists/{gist_id}/{sha}": Operation<"/gists/{gist_id}/{sha}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/gitignore/#get-all-gitignore-templates
+ */
+ "GET /gitignore/templates": Operation<"/gitignore/templates", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/gitignore/#get-a-gitignore-template
+ */
+ "GET /gitignore/templates/{name}": Operation<"/gitignore/templates/{name}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#list-repositories-accessible-to-the-app-installation
+ */
+ "GET /installation/repositories": Operation<"/installation/repositories", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues/#list-issues-assigned-to-the-authenticated-user
+ */
+ "GET /issues": Operation<"/issues", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/licenses/#get-all-commonly-used-licenses
+ */
+ "GET /licenses": Operation<"/licenses", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/licenses/#get-a-license
+ */
+ "GET /licenses/{license}": Operation<"/licenses/{license}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#get-a-subscription-plan-for-an-account
+ */
+ "GET /marketplace_listing/accounts/{account_id}": Operation<"/marketplace_listing/accounts/{account_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#list-plans
+ */
+ "GET /marketplace_listing/plans": Operation<"/marketplace_listing/plans", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#list-accounts-for-a-plan
+ */
+ "GET /marketplace_listing/plans/{plan_id}/accounts": Operation<"/marketplace_listing/plans/{plan_id}/accounts", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#get-a-subscription-plan-for-an-account-stubbed
+ */
+ "GET /marketplace_listing/stubbed/accounts/{account_id}": Operation<"/marketplace_listing/stubbed/accounts/{account_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#list-plans-stubbed
+ */
+ "GET /marketplace_listing/stubbed/plans": Operation<"/marketplace_listing/stubbed/plans", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#list-accounts-for-a-plan-stubbed
+ */
+ "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts": Operation<"/marketplace_listing/stubbed/plans/{plan_id}/accounts", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/meta/#get-github-meta-information
+ */
+ "GET /meta": Operation<"/meta", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#list-public-events-for-a-network-of-repositories
+ */
+ "GET /networks/{owner}/{repo}/events": Operation<"/networks/{owner}/{repo}/events", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#list-notifications-for-the-authenticated-user
+ */
+ "GET /notifications": Operation<"/notifications", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#get-a-thread
+ */
+ "GET /notifications/threads/{thread_id}": Operation<"/notifications/threads/{thread_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#get-a-thread-subscription-for-the-authenticated-user
+ */
+ "GET /notifications/threads/{thread_id}/subscription": Operation<"/notifications/threads/{thread_id}/subscription", "get">;
+ /**
+ * @see
+ */
+ "GET /octocat": Operation<"/octocat", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs/#list-organizations
+ */
+ "GET /organizations": Operation<"/organizations", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs/#get-an-organization
+ */
+ "GET /orgs/{org}": Operation<"/orgs/{org}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-github-actions-permissions-for-an-organization
+ */
+ "GET /orgs/{org}/actions/permissions": Operation<"/orgs/{org}/actions/permissions", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#list-selected-repositories-enabled-for-github-actions-in-an-organization
+ */
+ "GET /orgs/{org}/actions/permissions/repositories": Operation<"/orgs/{org}/actions/permissions/repositories", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-allowed-actions-for-an-organization
+ */
+ "GET /orgs/{org}/actions/permissions/selected-actions": Operation<"/orgs/{org}/actions/permissions/selected-actions", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runner-groups-for-an-organization
+ */
+ "GET /orgs/{org}/actions/runner-groups": Operation<"/orgs/{org}/actions/runner-groups", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-a-self-hosted-runner-group-for-an-organization
+ */
+ "GET /orgs/{org}/actions/runner-groups/{runner_group_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#list-repository-access-to-a-self-hosted-runner-group-in-an-organization
+ */
+ "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runners-in-a-group-for-an-organization
+ */
+ "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runners-for-an-organization
+ */
+ "GET /orgs/{org}/actions/runners": Operation<"/orgs/{org}/actions/runners", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#list-runner-applications-for-an-organization
+ */
+ "GET /orgs/{org}/actions/runners/downloads": Operation<"/orgs/{org}/actions/runners/downloads", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-a-self-hosted-runner-for-an-organization
+ */
+ "GET /orgs/{org}/actions/runners/{runner_id}": Operation<"/orgs/{org}/actions/runners/{runner_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#list-organization-secrets
+ */
+ "GET /orgs/{org}/actions/secrets": Operation<"/orgs/{org}/actions/secrets", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-an-organization-public-key
+ */
+ "GET /orgs/{org}/actions/secrets/public-key": Operation<"/orgs/{org}/actions/secrets/public-key", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-an-organization-secret
+ */
+ "GET /orgs/{org}/actions/secrets/{secret_name}": Operation<"/orgs/{org}/actions/secrets/{secret_name}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#list-selected-repositories-for-an-organization-secret
+ */
+ "GET /orgs/{org}/actions/secrets/{secret_name}/repositories": Operation<"/orgs/{org}/actions/secrets/{secret_name}/repositories", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#get-the-audit-log-for-an-organization
+ */
+ "GET /orgs/{org}/audit-log": Operation<"/orgs/{org}/audit-log", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#list-users-blocked-by-an-organization
+ */
+ "GET /orgs/{org}/blocks": Operation<"/orgs/{org}/blocks", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#check-if-a-user-is-blocked-by-an-organization
+ */
+ "GET /orgs/{org}/blocks/{username}": Operation<"/orgs/{org}/blocks/{username}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs/#list-saml-sso-authorizations-for-an-organization
+ */
+ "GET /orgs/{org}/credential-authorizations": Operation<"/orgs/{org}/credential-authorizations", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#list-public-organization-events
+ */
+ "GET /orgs/{org}/events": Operation<"/orgs/{org}/events", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#list-failed-organization-invitations
+ */
+ "GET /orgs/{org}/failed_invitations": Operation<"/orgs/{org}/failed_invitations", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#list-organization-webhooks
+ */
+ "GET /orgs/{org}/hooks": Operation<"/orgs/{org}/hooks", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#get-an-organization-webhook
+ */
+ "GET /orgs/{org}/hooks/{hook_id}": Operation<"/orgs/{org}/hooks/{hook_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#get-a-webhook-configuration-for-an-organization
+ */
+ "GET /orgs/{org}/hooks/{hook_id}/config": Operation<"/orgs/{org}/hooks/{hook_id}/config", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps/#get-an-organization-installation-for-the-authenticated-app
+ */
+ "GET /orgs/{org}/installation": Operation<"/orgs/{org}/installation", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs/#list-app-installations-for-an-organization
+ */
+ "GET /orgs/{org}/installations": Operation<"/orgs/{org}/installations", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/interactions#get-interaction-restrictions-for-an-organization
+ */
+ "GET /orgs/{org}/interaction-limits": Operation<"/orgs/{org}/interaction-limits", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#list-pending-organization-invitations
+ */
+ "GET /orgs/{org}/invitations": Operation<"/orgs/{org}/invitations", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#list-organization-invitation-teams
+ */
+ "GET /orgs/{org}/invitations/{invitation_id}/teams": Operation<"/orgs/{org}/invitations/{invitation_id}/teams", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues/#list-organization-issues-assigned-to-the-authenticated-user
+ */
+ "GET /orgs/{org}/issues": Operation<"/orgs/{org}/issues", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#list-organization-members
+ */
+ "GET /orgs/{org}/members": Operation<"/orgs/{org}/members", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#check-organization-membership-for-a-user
+ */
+ "GET /orgs/{org}/members/{username}": Operation<"/orgs/{org}/members/{username}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#get-organization-membership-for-a-user
+ */
+ "GET /orgs/{org}/memberships/{username}": Operation<"/orgs/{org}/memberships/{username}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#list-organization-migrations
+ */
+ "GET /orgs/{org}/migrations": Operation<"/orgs/{org}/migrations", "get", "wyandotte">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#get-an-organization-migration-status
+ */
+ "GET /orgs/{org}/migrations/{migration_id}": Operation<"/orgs/{org}/migrations/{migration_id}", "get", "wyandotte">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#download-an-organization-migration-archive
+ */
+ "GET /orgs/{org}/migrations/{migration_id}/archive": Operation<"/orgs/{org}/migrations/{migration_id}/archive", "get", "wyandotte">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#list-repositories-in-an-organization-migration
+ */
+ "GET /orgs/{org}/migrations/{migration_id}/repositories": Operation<"/orgs/{org}/migrations/{migration_id}/repositories", "get", "wyandotte">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#list-outside-collaborators-for-an-organization
+ */
+ "GET /orgs/{org}/outside_collaborators": Operation<"/orgs/{org}/outside_collaborators", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/packages#get-a-package-for-an-organization
+ */
+ "GET /orgs/{org}/packages/{package_type}/{package_name}": Operation<"/orgs/{org}/packages/{package_type}/{package_name}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/packages#get-all-package-versions-for-a-package-owned-by-the-authenticated-user
+ */
+ "GET /orgs/{org}/packages/{package_type}/{package_name}/versions": Operation<"/orgs/{org}/packages/{package_type}/{package_name}/versions", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/packages#get-a-package-version-for-an-organization
+ */
+ "GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}": Operation<"/orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects/#list-organization-projects
+ */
+ "GET /orgs/{org}/projects": Operation<"/orgs/{org}/projects", "get", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#list-public-organization-members
+ */
+ "GET /orgs/{org}/public_members": Operation<"/orgs/{org}/public_members", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#check-public-organization-membership-for-a-user
+ */
+ "GET /orgs/{org}/public_members/{username}": Operation<"/orgs/{org}/public_members/{username}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#list-organization-repositories
+ */
+ "GET /orgs/{org}/repos": Operation<"/orgs/{org}/repos", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/billing/#get-github-actions-billing-for-an-organization
+ */
+ "GET /orgs/{org}/settings/billing/actions": Operation<"/orgs/{org}/settings/billing/actions", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/billing/#get-github-packages-billing-for-an-organization
+ */
+ "GET /orgs/{org}/settings/billing/packages": Operation<"/orgs/{org}/settings/billing/packages", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/billing/#get-shared-storage-billing-for-an-organization
+ */
+ "GET /orgs/{org}/settings/billing/shared-storage": Operation<"/orgs/{org}/settings/billing/shared-storage", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#list-idp-groups-for-an-organization
+ */
+ "GET /orgs/{org}/team-sync/groups": Operation<"/orgs/{org}/team-sync/groups", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#list-teams
+ */
+ "GET /orgs/{org}/teams": Operation<"/orgs/{org}/teams", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#get-a-team-by-name
+ */
+ "GET /orgs/{org}/teams/{team_slug}": Operation<"/orgs/{org}/teams/{team_slug}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#list-discussions
+ */
+ "GET /orgs/{org}/teams/{team_slug}/discussions": Operation<"/orgs/{org}/teams/{team_slug}/discussions", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#get-a-discussion
+ */
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#list-discussion-comments
+ */
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#get-a-discussion-comment
+ */
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#list-reactions-for-a-team-discussion-comment
+ */
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "get", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#list-reactions-for-a-team-discussion
+ */
+ "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "get", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#list-pending-team-invitations
+ */
+ "GET /orgs/{org}/teams/{team_slug}/invitations": Operation<"/orgs/{org}/teams/{team_slug}/invitations", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#list-team-members
+ */
+ "GET /orgs/{org}/teams/{team_slug}/members": Operation<"/orgs/{org}/teams/{team_slug}/members", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#get-team-membership-for-a-user
+ */
+ "GET /orgs/{org}/teams/{team_slug}/memberships/{username}": Operation<"/orgs/{org}/teams/{team_slug}/memberships/{username}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#list-team-projects
+ */
+ "GET /orgs/{org}/teams/{team_slug}/projects": Operation<"/orgs/{org}/teams/{team_slug}/projects", "get", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#check-team-permissions-for-a-project
+ */
+ "GET /orgs/{org}/teams/{team_slug}/projects/{project_id}": Operation<"/orgs/{org}/teams/{team_slug}/projects/{project_id}", "get", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#list-team-repositories
+ */
+ "GET /orgs/{org}/teams/{team_slug}/repos": Operation<"/orgs/{org}/teams/{team_slug}/repos", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#check-team-permissions-for-a-repository
+ */
+ "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}": Operation<"/orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#list-idp-groups-for-a-team
+ */
+ "GET /orgs/{org}/teams/{team_slug}/team-sync/group-mappings": Operation<"/orgs/{org}/teams/{team_slug}/team-sync/group-mappings", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#list-child-teams
+ */
+ "GET /orgs/{org}/teams/{team_slug}/teams": Operation<"/orgs/{org}/teams/{team_slug}/teams", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects#get-a-project-card
+ */
+ "GET /projects/columns/cards/{card_id}": Operation<"/projects/columns/cards/{card_id}", "get", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects#get-a-project-column
+ */
+ "GET /projects/columns/{column_id}": Operation<"/projects/columns/{column_id}", "get", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects#list-project-cards
+ */
+ "GET /projects/columns/{column_id}/cards": Operation<"/projects/columns/{column_id}/cards", "get", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects/#get-a-project
+ */
+ "GET /projects/{project_id}": Operation<"/projects/{project_id}", "get", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects#list-project-collaborators
+ */
+ "GET /projects/{project_id}/collaborators": Operation<"/projects/{project_id}/collaborators", "get", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects#get-project-permission-for-a-user
+ */
+ "GET /projects/{project_id}/collaborators/{username}/permission": Operation<"/projects/{project_id}/collaborators/{username}/permission", "get", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects#list-project-columns
+ */
+ "GET /projects/{project_id}/columns": Operation<"/projects/{project_id}/columns", "get", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/rate_limit/#get-rate-limit-status-for-the-authenticated-user
+ */
+ "GET /rate_limit": Operation<"/rate_limit", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#get-a-repository
+ */
+ "GET /repos/{owner}/{repo}": Operation<"/repos/{owner}/{repo}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#list-artifacts-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/actions/artifacts": Operation<"/repos/{owner}/{repo}/actions/artifacts", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-an-artifact
+ */
+ "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}": Operation<"/repos/{owner}/{repo}/actions/artifacts/{artifact_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#download-an-artifact
+ */
+ "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}": Operation<"/repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-a-job-for-a-workflow-run
+ */
+ "GET /repos/{owner}/{repo}/actions/jobs/{job_id}": Operation<"/repos/{owner}/{repo}/actions/jobs/{job_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#download-job-logs-for-a-workflow-run
+ */
+ "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs": Operation<"/repos/{owner}/{repo}/actions/jobs/{job_id}/logs", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-github-actions-permissions-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/actions/permissions": Operation<"/repos/{owner}/{repo}/actions/permissions", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-allowed-actions-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/actions/permissions/selected-actions": Operation<"/repos/{owner}/{repo}/actions/permissions/selected-actions", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#list-self-hosted-runners-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/actions/runners": Operation<"/repos/{owner}/{repo}/actions/runners", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#list-runner-applications-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/actions/runners/downloads": Operation<"/repos/{owner}/{repo}/actions/runners/downloads", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-a-self-hosted-runner-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/actions/runners/{runner_id}": Operation<"/repos/{owner}/{repo}/actions/runners/{runner_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#list-workflow-runs-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/actions/runs": Operation<"/repos/{owner}/{repo}/actions/runs", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-a-workflow-run
+ */
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-the-review-history-for-a-workflow-run
+ */
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/approvals", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#list-workflow-run-artifacts
+ */
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#list-jobs-for-a-workflow-run
+ */
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#download-workflow-run-logs
+ */
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/logs", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-pending-deployments-for-a-workflow-run
+ */
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-workflow-run-usage
+ */
+ "GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/timing", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#list-repository-secrets
+ */
+ "GET /repos/{owner}/{repo}/actions/secrets": Operation<"/repos/{owner}/{repo}/actions/secrets", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-a-repository-public-key
+ */
+ "GET /repos/{owner}/{repo}/actions/secrets/public-key": Operation<"/repos/{owner}/{repo}/actions/secrets/public-key", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-a-repository-secret
+ */
+ "GET /repos/{owner}/{repo}/actions/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/actions/secrets/{secret_name}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#list-repository-workflows
+ */
+ "GET /repos/{owner}/{repo}/actions/workflows": Operation<"/repos/{owner}/{repo}/actions/workflows", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-a-workflow
+ */
+ "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#list-workflow-runs
+ */
+ "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-workflow-usage
+ */
+ "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#list-assignees
+ */
+ "GET /repos/{owner}/{repo}/assignees": Operation<"/repos/{owner}/{repo}/assignees", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#check-if-a-user-can-be-assigned
+ */
+ "GET /repos/{owner}/{repo}/assignees/{assignee}": Operation<"/repos/{owner}/{repo}/assignees/{assignee}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-branches
+ */
+ "GET /repos/{owner}/{repo}/branches": Operation<"/repos/{owner}/{repo}/branches", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-a-branch
+ */
+ "GET /repos/{owner}/{repo}/branches/{branch}": Operation<"/repos/{owner}/{repo}/branches/{branch}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-branch-protection
+ */
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-admin-branch-protection
+ */
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-pull-request-review-protection
+ */
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-commit-signature-protection
+ */
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", "get", "zzzax">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-status-checks-protection
+ */
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-all-status-check-contexts
+ */
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-access-restrictions
+ */
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-apps-with-access-to-the-protected-branch
+ */
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-teams-with-access-to-the-protected-branch
+ */
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-users-with-access-to-the-protected-branch
+ */
+ "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/checks#get-a-check-run
+ */
+ "GET /repos/{owner}/{repo}/check-runs/{check_run_id}": Operation<"/repos/{owner}/{repo}/check-runs/{check_run_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/checks#list-check-run-annotations
+ */
+ "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations": Operation<"/repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/checks#get-a-check-suite
+ */
+ "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}": Operation<"/repos/{owner}/{repo}/check-suites/{check_suite_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/checks#list-check-runs-in-a-check-suite
+ */
+ "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs": Operation<"/repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/code-scanning#list-code-scanning-alerts-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/code-scanning/alerts": Operation<"/repos/{owner}/{repo}/code-scanning/alerts", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/code-scanning#get-a-code-scanning-alert
+ * @deprecated "alert_id" is now "alert_number"
+ */
+ "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_id}": Operation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/code-scanning#get-a-code-scanning-alert
+ */
+ "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/code-scanning#list-instances-of-a-code-scanning-alert
+ */
+ "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances": Operation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/code-scanning#list-code-scanning-analyses-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/code-scanning/analyses": Operation<"/repos/{owner}/{repo}/code-scanning/analyses", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/code-scanning#get-a-code-scanning-analysis-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}": Operation<"/repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/code-scanning#get-information-about-a-sarif-upload
+ */
+ "GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}": Operation<"/repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-repository-collaborators
+ */
+ "GET /repos/{owner}/{repo}/collaborators": Operation<"/repos/{owner}/{repo}/collaborators", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#check-if-a-user-is-a-repository-collaborator
+ */
+ "GET /repos/{owner}/{repo}/collaborators/{username}": Operation<"/repos/{owner}/{repo}/collaborators/{username}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-repository-permissions-for-a-user
+ */
+ "GET /repos/{owner}/{repo}/collaborators/{username}/permission": Operation<"/repos/{owner}/{repo}/collaborators/{username}/permission", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-commit-comments-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/comments": Operation<"/repos/{owner}/{repo}/comments", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-a-commit-comment
+ */
+ "GET /repos/{owner}/{repo}/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/comments/{comment_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#list-reactions-for-a-commit-comment
+ */
+ "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/comments/{comment_id}/reactions", "get", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-commits
+ */
+ "GET /repos/{owner}/{repo}/commits": Operation<"/repos/{owner}/{repo}/commits", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-branches-for-head-commit
+ */
+ "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head": Operation<"/repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head", "get", "groot">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-commit-comments
+ */
+ "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments": Operation<"/repos/{owner}/{repo}/commits/{commit_sha}/comments", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-pull-requests-associated-with-a-commit
+ */
+ "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls": Operation<"/repos/{owner}/{repo}/commits/{commit_sha}/pulls", "get", "groot">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-a-commit
+ */
+ "GET /repos/{owner}/{repo}/commits/{ref}": Operation<"/repos/{owner}/{repo}/commits/{ref}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/checks#list-check-runs-for-a-git-reference
+ */
+ "GET /repos/{owner}/{repo}/commits/{ref}/check-runs": Operation<"/repos/{owner}/{repo}/commits/{ref}/check-runs", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/checks#list-check-suites-for-a-git-reference
+ */
+ "GET /repos/{owner}/{repo}/commits/{ref}/check-suites": Operation<"/repos/{owner}/{repo}/commits/{ref}/check-suites", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-the-combined-status-for-a-specific-reference
+ */
+ "GET /repos/{owner}/{repo}/commits/{ref}/status": Operation<"/repos/{owner}/{repo}/commits/{ref}/status", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-commit-statuses-for-a-reference
+ */
+ "GET /repos/{owner}/{repo}/commits/{ref}/statuses": Operation<"/repos/{owner}/{repo}/commits/{ref}/statuses", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/codes_of_conduct/#get-the-code-of-conduct-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/community/code_of_conduct": Operation<"/repos/{owner}/{repo}/community/code_of_conduct", "get", "scarlet-witch">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-community-profile-metrics
+ */
+ "GET /repos/{owner}/{repo}/community/profile": Operation<"/repos/{owner}/{repo}/community/profile", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#compare-two-commits
+ */
+ "GET /repos/{owner}/{repo}/compare/{base}...{head}": Operation<"/repos/{owner}/{repo}/compare/{base}...{head}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-repository-content
+ */
+ "GET /repos/{owner}/{repo}/contents/{path}": Operation<"/repos/{owner}/{repo}/contents/{path}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#list-repository-contributors
+ */
+ "GET /repos/{owner}/{repo}/contributors": Operation<"/repos/{owner}/{repo}/contributors", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-deployments
+ */
+ "GET /repos/{owner}/{repo}/deployments": Operation<"/repos/{owner}/{repo}/deployments", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-a-deployment
+ */
+ "GET /repos/{owner}/{repo}/deployments/{deployment_id}": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-deployment-statuses
+ */
+ "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-a-deployment-status
+ */
+ "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-all-environments
+ */
+ "GET /repos/{owner}/{repo}/environments": Operation<"/repos/{owner}/{repo}/environments", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-an-environment
+ */
+ "GET /repos/{owner}/{repo}/environments/{environment_name}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#list-repository-events
+ */
+ "GET /repos/{owner}/{repo}/events": Operation<"/repos/{owner}/{repo}/events", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-forks
+ */
+ "GET /repos/{owner}/{repo}/forks": Operation<"/repos/{owner}/{repo}/forks", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/git#get-a-blob
+ */
+ "GET /repos/{owner}/{repo}/git/blobs/{file_sha}": Operation<"/repos/{owner}/{repo}/git/blobs/{file_sha}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/git#get-a-commit
+ */
+ "GET /repos/{owner}/{repo}/git/commits/{commit_sha}": Operation<"/repos/{owner}/{repo}/git/commits/{commit_sha}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/git#list-matching-references
+ */
+ "GET /repos/{owner}/{repo}/git/matching-refs/{ref}": Operation<"/repos/{owner}/{repo}/git/matching-refs/{ref}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/git#get-a-reference
+ */
+ "GET /repos/{owner}/{repo}/git/ref/{ref}": Operation<"/repos/{owner}/{repo}/git/ref/{ref}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/git#get-a-tag
+ */
+ "GET /repos/{owner}/{repo}/git/tags/{tag_sha}": Operation<"/repos/{owner}/{repo}/git/tags/{tag_sha}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/git#get-a-tree
+ */
+ "GET /repos/{owner}/{repo}/git/trees/{tree_sha}": Operation<"/repos/{owner}/{repo}/git/trees/{tree_sha}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-repository-webhooks
+ */
+ "GET /repos/{owner}/{repo}/hooks": Operation<"/repos/{owner}/{repo}/hooks", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-a-repository-webhook
+ */
+ "GET /repos/{owner}/{repo}/hooks/{hook_id}": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-a-webhook-configuration-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/hooks/{hook_id}/config": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/config", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#get-an-import-status
+ */
+ "GET /repos/{owner}/{repo}/import": Operation<"/repos/{owner}/{repo}/import", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#get-commit-authors
+ */
+ "GET /repos/{owner}/{repo}/import/authors": Operation<"/repos/{owner}/{repo}/import/authors", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#get-large-files
+ */
+ "GET /repos/{owner}/{repo}/import/large_files": Operation<"/repos/{owner}/{repo}/import/large_files", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps/#get-a-repository-installation-for-the-authenticated-app
+ */
+ "GET /repos/{owner}/{repo}/installation": Operation<"/repos/{owner}/{repo}/installation", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/interactions#get-interaction-restrictions-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/interaction-limits": Operation<"/repos/{owner}/{repo}/interaction-limits", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-repository-invitations
+ */
+ "GET /repos/{owner}/{repo}/invitations": Operation<"/repos/{owner}/{repo}/invitations", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues/#list-repository-issues
+ */
+ "GET /repos/{owner}/{repo}/issues": Operation<"/repos/{owner}/{repo}/issues", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#list-issue-comments-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/issues/comments": Operation<"/repos/{owner}/{repo}/issues/comments", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#get-an-issue-comment
+ */
+ "GET /repos/{owner}/{repo}/issues/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#list-reactions-for-an-issue-comment
+ */
+ "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "get", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#list-issue-events-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/issues/events": Operation<"/repos/{owner}/{repo}/issues/events", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#get-an-issue-event
+ */
+ "GET /repos/{owner}/{repo}/issues/events/{event_id}": Operation<"/repos/{owner}/{repo}/issues/events/{event_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues/#get-an-issue
+ */
+ "GET /repos/{owner}/{repo}/issues/{issue_number}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#list-issue-comments
+ */
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/comments": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/comments", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#list-issue-events
+ */
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/events": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/events", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#list-labels-for-an-issue
+ */
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/labels": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#list-reactions-for-an-issue
+ */
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/reactions", "get", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#list-timeline-events-for-an-issue
+ */
+ "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/timeline", "get", "mockingbird">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-deploy-keys
+ */
+ "GET /repos/{owner}/{repo}/keys": Operation<"/repos/{owner}/{repo}/keys", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-a-deploy-key
+ */
+ "GET /repos/{owner}/{repo}/keys/{key_id}": Operation<"/repos/{owner}/{repo}/keys/{key_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#list-labels-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/labels": Operation<"/repos/{owner}/{repo}/labels", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#get-a-label
+ */
+ "GET /repos/{owner}/{repo}/labels/{name}": Operation<"/repos/{owner}/{repo}/labels/{name}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#list-repository-languages
+ */
+ "GET /repos/{owner}/{repo}/languages": Operation<"/repos/{owner}/{repo}/languages", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/licenses/#get-the-license-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/license": Operation<"/repos/{owner}/{repo}/license", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#list-milestones
+ */
+ "GET /repos/{owner}/{repo}/milestones": Operation<"/repos/{owner}/{repo}/milestones", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#get-a-milestone
+ */
+ "GET /repos/{owner}/{repo}/milestones/{milestone_number}": Operation<"/repos/{owner}/{repo}/milestones/{milestone_number}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#list-labels-for-issues-in-a-milestone
+ */
+ "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels": Operation<"/repos/{owner}/{repo}/milestones/{milestone_number}/labels", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#list-repository-notifications-for-the-authenticated-user
+ */
+ "GET /repos/{owner}/{repo}/notifications": Operation<"/repos/{owner}/{repo}/notifications", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-a-github-pages-site
+ */
+ "GET /repos/{owner}/{repo}/pages": Operation<"/repos/{owner}/{repo}/pages", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-github-pages-builds
+ */
+ "GET /repos/{owner}/{repo}/pages/builds": Operation<"/repos/{owner}/{repo}/pages/builds", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-latest-pages-build
+ */
+ "GET /repos/{owner}/{repo}/pages/builds/latest": Operation<"/repos/{owner}/{repo}/pages/builds/latest", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-github-pages-build
+ */
+ "GET /repos/{owner}/{repo}/pages/builds/{build_id}": Operation<"/repos/{owner}/{repo}/pages/builds/{build_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects/#list-repository-projects
+ */
+ "GET /repos/{owner}/{repo}/projects": Operation<"/repos/{owner}/{repo}/projects", "get", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls/#list-pull-requests
+ */
+ "GET /repos/{owner}/{repo}/pulls": Operation<"/repos/{owner}/{repo}/pulls", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls#list-review-comments-in-a-repository
+ */
+ "GET /repos/{owner}/{repo}/pulls/comments": Operation<"/repos/{owner}/{repo}/pulls/comments", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls#get-a-review-comment-for-a-pull-request
+ */
+ "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#list-reactions-for-a-pull-request-review-comment
+ */
+ "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "get", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls/#get-a-pull-request
+ */
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls#list-review-comments-on-a-pull-request
+ */
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/comments", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls/#list-commits-on-a-pull-request
+ */
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/commits", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls/#list-pull-requests-files
+ */
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/files": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/files", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls/#check-if-a-pull-request-has-been-merged
+ */
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/merge": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/merge", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls#list-requested-reviewers-for-a-pull-request
+ */
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls#list-reviews-for-a-pull-request
+ */
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls#get-a-review-for-a-pull-request
+ */
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls#list-comments-for-a-pull-request-review
+ */
+ "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-a-repository-readme
+ */
+ "GET /repos/{owner}/{repo}/readme": Operation<"/repos/{owner}/{repo}/readme", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-releases
+ */
+ "GET /repos/{owner}/{repo}/releases": Operation<"/repos/{owner}/{repo}/releases", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-a-release-asset
+ */
+ "GET /repos/{owner}/{repo}/releases/assets/{asset_id}": Operation<"/repos/{owner}/{repo}/releases/assets/{asset_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-the-latest-release
+ */
+ "GET /repos/{owner}/{repo}/releases/latest": Operation<"/repos/{owner}/{repo}/releases/latest", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-a-release-by-tag-name
+ */
+ "GET /repos/{owner}/{repo}/releases/tags/{tag}": Operation<"/repos/{owner}/{repo}/releases/tags/{tag}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-a-release
+ */
+ "GET /repos/{owner}/{repo}/releases/{release_id}": Operation<"/repos/{owner}/{repo}/releases/{release_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-release-assets
+ */
+ "GET /repos/{owner}/{repo}/releases/{release_id}/assets": Operation<"/repos/{owner}/{repo}/releases/{release_id}/assets", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/secret-scanning#list-secret-scanning-alerts-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/secret-scanning/alerts": Operation<"/repos/{owner}/{repo}/secret-scanning/alerts", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/secret-scanning#get-a-secret-scanning-alert
+ */
+ "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#list-stargazers
+ */
+ "GET /repos/{owner}/{repo}/stargazers": Operation<"/repos/{owner}/{repo}/stargazers", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-the-weekly-commit-activity
+ */
+ "GET /repos/{owner}/{repo}/stats/code_frequency": Operation<"/repos/{owner}/{repo}/stats/code_frequency", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-the-last-year-of-commit-activity
+ */
+ "GET /repos/{owner}/{repo}/stats/commit_activity": Operation<"/repos/{owner}/{repo}/stats/commit_activity", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-all-contributor-commit-activity
+ */
+ "GET /repos/{owner}/{repo}/stats/contributors": Operation<"/repos/{owner}/{repo}/stats/contributors", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-the-weekly-commit-count
+ */
+ "GET /repos/{owner}/{repo}/stats/participation": Operation<"/repos/{owner}/{repo}/stats/participation", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-the-hourly-commit-count-for-each-day
+ */
+ "GET /repos/{owner}/{repo}/stats/punch_card": Operation<"/repos/{owner}/{repo}/stats/punch_card", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#list-watchers
+ */
+ "GET /repos/{owner}/{repo}/subscribers": Operation<"/repos/{owner}/{repo}/subscribers", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#get-a-repository-subscription
+ */
+ "GET /repos/{owner}/{repo}/subscription": Operation<"/repos/{owner}/{repo}/subscription", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#list-repository-tags
+ */
+ "GET /repos/{owner}/{repo}/tags": Operation<"/repos/{owner}/{repo}/tags", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#download-a-repository-archive
+ */
+ "GET /repos/{owner}/{repo}/tarball/{ref}": Operation<"/repos/{owner}/{repo}/tarball/{ref}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#list-repository-teams
+ */
+ "GET /repos/{owner}/{repo}/teams": Operation<"/repos/{owner}/{repo}/teams", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#get-all-repository-topics
+ */
+ "GET /repos/{owner}/{repo}/topics": Operation<"/repos/{owner}/{repo}/topics", "get", "mercy">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-repository-clones
+ */
+ "GET /repos/{owner}/{repo}/traffic/clones": Operation<"/repos/{owner}/{repo}/traffic/clones", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-top-referral-paths
+ */
+ "GET /repos/{owner}/{repo}/traffic/popular/paths": Operation<"/repos/{owner}/{repo}/traffic/popular/paths", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-top-referral-sources
+ */
+ "GET /repos/{owner}/{repo}/traffic/popular/referrers": Operation<"/repos/{owner}/{repo}/traffic/popular/referrers", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#get-page-views
+ */
+ "GET /repos/{owner}/{repo}/traffic/views": Operation<"/repos/{owner}/{repo}/traffic/views", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#check-if-vulnerability-alerts-are-enabled-for-a-repository
+ */
+ "GET /repos/{owner}/{repo}/vulnerability-alerts": Operation<"/repos/{owner}/{repo}/vulnerability-alerts", "get", "dorian">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#download-a-repository-archive
+ */
+ "GET /repos/{owner}/{repo}/zipball/{ref}": Operation<"/repos/{owner}/{repo}/zipball/{ref}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#list-public-repositories
+ */
+ "GET /repositories": Operation<"/repositories", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#list-environment-secrets
+ */
+ "GET /repositories/{repository_id}/environments/{environment_name}/secrets": Operation<"/repositories/{repository_id}/environments/{environment_name}/secrets", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-an-environment-public-key
+ */
+ "GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key": Operation<"/repositories/{repository_id}/environments/{environment_name}/secrets/public-key", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#get-an-environment-secret
+ */
+ "GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}": Operation<"/repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#list-provisioned-scim-groups-for-an-enterprise
+ */
+ "GET /scim/v2/enterprises/{enterprise}/Groups": Operation<"/scim/v2/enterprises/{enterprise}/Groups", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#get-scim-provisioning-information-for-an-enterprise-group
+ */
+ "GET /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}": Operation<"/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#list-scim-provisioned-identities-for-an-enterprise
+ */
+ "GET /scim/v2/enterprises/{enterprise}/Users": Operation<"/scim/v2/enterprises/{enterprise}/Users", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#get-scim-provisioning-information-for-an-enterprise-user
+ */
+ "GET /scim/v2/enterprises/{enterprise}/Users/{scim_user_id}": Operation<"/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/scim/#list-scim-provisioned-identities
+ */
+ "GET /scim/v2/organizations/{org}/Users": Operation<"/scim/v2/organizations/{org}/Users", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/scim/#get-scim-provisioning-information-for-a-user
+ */
+ "GET /scim/v2/organizations/{org}/Users/{scim_user_id}": Operation<"/scim/v2/organizations/{org}/Users/{scim_user_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/search/#search-code
+ */
+ "GET /search/code": Operation<"/search/code", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/search/#search-commits
+ */
+ "GET /search/commits": Operation<"/search/commits", "get", "cloak">;
+ /**
+ * @see https://docs.github.com/rest/reference/search/#search-issues-and-pull-requests
+ */
+ "GET /search/issues": Operation<"/search/issues", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/search/#search-labels
+ */
+ "GET /search/labels": Operation<"/search/labels", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/search/#search-repositories
+ */
+ "GET /search/repositories": Operation<"/search/repositories", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/search/#search-topics
+ */
+ "GET /search/topics": Operation<"/search/topics", "get", "mercy">;
+ /**
+ * @see https://docs.github.com/rest/reference/search/#search-users
+ */
+ "GET /search/users": Operation<"/search/users", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#get-a-team-legacy
+ */
+ "GET /teams/{team_id}": Operation<"/teams/{team_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#list-discussions-legacy
+ */
+ "GET /teams/{team_id}/discussions": Operation<"/teams/{team_id}/discussions", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#get-a-discussion-legacy
+ */
+ "GET /teams/{team_id}/discussions/{discussion_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#list-discussion-comments-legacy
+ */
+ "GET /teams/{team_id}/discussions/{discussion_number}/comments": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#get-a-discussion-comment-legacy
+ */
+ "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#list-reactions-for-a-team-discussion-comment-legacy
+ */
+ "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "get", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#list-reactions-for-a-team-discussion-legacy
+ */
+ "GET /teams/{team_id}/discussions/{discussion_number}/reactions": Operation<"/teams/{team_id}/discussions/{discussion_number}/reactions", "get", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#list-pending-team-invitations-legacy
+ */
+ "GET /teams/{team_id}/invitations": Operation<"/teams/{team_id}/invitations", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#list-team-members-legacy
+ */
+ "GET /teams/{team_id}/members": Operation<"/teams/{team_id}/members", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#get-team-member-legacy
+ */
+ "GET /teams/{team_id}/members/{username}": Operation<"/teams/{team_id}/members/{username}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#get-team-membership-for-a-user-legacy
+ */
+ "GET /teams/{team_id}/memberships/{username}": Operation<"/teams/{team_id}/memberships/{username}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#list-team-projects-legacy
+ */
+ "GET /teams/{team_id}/projects": Operation<"/teams/{team_id}/projects", "get", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#check-team-permissions-for-a-project-legacy
+ */
+ "GET /teams/{team_id}/projects/{project_id}": Operation<"/teams/{team_id}/projects/{project_id}", "get", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#list-team-repositories-legacy
+ */
+ "GET /teams/{team_id}/repos": Operation<"/teams/{team_id}/repos", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#check-team-permissions-for-a-repository-legacy
+ */
+ "GET /teams/{team_id}/repos/{owner}/{repo}": Operation<"/teams/{team_id}/repos/{owner}/{repo}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#list-idp-groups-for-a-team-legacy
+ */
+ "GET /teams/{team_id}/team-sync/group-mappings": Operation<"/teams/{team_id}/team-sync/group-mappings", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#list-child-teams-legacy
+ */
+ "GET /teams/{team_id}/teams": Operation<"/teams/{team_id}/teams", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/users/#get-the-authenticated-user
+ */
+ "GET /user": Operation<"/user", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#list-users-blocked-by-the-authenticated-user
+ */
+ "GET /user/blocks": Operation<"/user/blocks", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#check-if-a-user-is-blocked-by-the-authenticated-user
+ */
+ "GET /user/blocks/{username}": Operation<"/user/blocks/{username}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#list-email-addresses-for-the-authenticated-user
+ */
+ "GET /user/emails": Operation<"/user/emails", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#list-followers-of-the-authenticated-user
+ */
+ "GET /user/followers": Operation<"/user/followers", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#list-the-people-the-authenticated-user-follows
+ */
+ "GET /user/following": Operation<"/user/following", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#check-if-a-person-is-followed-by-the-authenticated-user
+ */
+ "GET /user/following/{username}": Operation<"/user/following/{username}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#list-gpg-keys-for-the-authenticated-user
+ */
+ "GET /user/gpg_keys": Operation<"/user/gpg_keys", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#get-a-gpg-key-for-the-authenticated-user
+ */
+ "GET /user/gpg_keys/{gpg_key_id}": Operation<"/user/gpg_keys/{gpg_key_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#list-app-installations-accessible-to-the-user-access-token
+ */
+ "GET /user/installations": Operation<"/user/installations", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#list-repositories-accessible-to-the-user-access-token
+ */
+ "GET /user/installations/{installation_id}/repositories": Operation<"/user/installations/{installation_id}/repositories", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/interactions#get-interaction-restrictions-for-your-public-repositories
+ */
+ "GET /user/interaction-limits": Operation<"/user/interaction-limits", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues/#list-user-account-issues-assigned-to-the-authenticated-user
+ */
+ "GET /user/issues": Operation<"/user/issues", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#list-public-ssh-keys-for-the-authenticated-user
+ */
+ "GET /user/keys": Operation<"/user/keys", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#get-a-public-ssh-key-for-the-authenticated-user
+ */
+ "GET /user/keys/{key_id}": Operation<"/user/keys/{key_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#list-subscriptions-for-the-authenticated-user
+ */
+ "GET /user/marketplace_purchases": Operation<"/user/marketplace_purchases", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#list-subscriptions-for-the-authenticated-user-stubbed
+ */
+ "GET /user/marketplace_purchases/stubbed": Operation<"/user/marketplace_purchases/stubbed", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#list-organization-memberships-for-the-authenticated-user
+ */
+ "GET /user/memberships/orgs": Operation<"/user/memberships/orgs", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#get-an-organization-membership-for-the-authenticated-user
+ */
+ "GET /user/memberships/orgs/{org}": Operation<"/user/memberships/orgs/{org}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#list-user-migrations
+ */
+ "GET /user/migrations": Operation<"/user/migrations", "get", "wyandotte">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#get-a-user-migration-status
+ */
+ "GET /user/migrations/{migration_id}": Operation<"/user/migrations/{migration_id}", "get", "wyandotte">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#download-a-user-migration-archive
+ */
+ "GET /user/migrations/{migration_id}/archive": Operation<"/user/migrations/{migration_id}/archive", "get", "wyandotte">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#list-repositories-for-a-user-migration
+ */
+ "GET /user/migrations/{migration_id}/repositories": Operation<"/user/migrations/{migration_id}/repositories", "get", "wyandotte">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs/#list-organizations-for-the-authenticated-user
+ */
+ "GET /user/orgs": Operation<"/user/orgs", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/packages#get-a-package-for-the-authenticated-user
+ */
+ "GET /user/packages/{package_type}/{package_name}": Operation<"/user/packages/{package_type}/{package_name}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/packages#get-all-package-versions-for-a-package-owned-by-the-authenticated-user
+ */
+ "GET /user/packages/{package_type}/{package_name}/versions": Operation<"/user/packages/{package_type}/{package_name}/versions", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/packages#get-a-package-version-for-the-authenticated-user
+ */
+ "GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}": Operation<"/user/packages/{package_type}/{package_name}/versions/{package_version_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#list-public-email-addresses-for-the-authenticated-user
+ */
+ "GET /user/public_emails": Operation<"/user/public_emails", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#list-repositories-for-the-authenticated-user
+ */
+ "GET /user/repos": Operation<"/user/repos", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#list-repository-invitations-for-the-authenticated-user
+ */
+ "GET /user/repository_invitations": Operation<"/user/repository_invitations", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#list-repositories-starred-by-the-authenticated-user
+ */
+ "GET /user/starred": Operation<"/user/starred", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#check-if-a-repository-is-starred-by-the-authenticated-user
+ */
+ "GET /user/starred/{owner}/{repo}": Operation<"/user/starred/{owner}/{repo}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#list-repositories-watched-by-the-authenticated-user
+ */
+ "GET /user/subscriptions": Operation<"/user/subscriptions", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#list-teams-for-the-authenticated-user
+ */
+ "GET /user/teams": Operation<"/user/teams", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/users/#list-users
+ */
+ "GET /users": Operation<"/users", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/users/#get-a-user
+ */
+ "GET /users/{username}": Operation<"/users/{username}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#list-events-for-the-authenticated-user
+ */
+ "GET /users/{username}/events": Operation<"/users/{username}/events", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#list-organization-events-for-the-authenticated-user
+ */
+ "GET /users/{username}/events/orgs/{org}": Operation<"/users/{username}/events/orgs/{org}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#list-public-events-for-a-user
+ */
+ "GET /users/{username}/events/public": Operation<"/users/{username}/events/public", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#list-followers-of-a-user
+ */
+ "GET /users/{username}/followers": Operation<"/users/{username}/followers", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#list-the-people-a-user-follows
+ */
+ "GET /users/{username}/following": Operation<"/users/{username}/following", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#check-if-a-user-follows-another-user
+ */
+ "GET /users/{username}/following/{target_user}": Operation<"/users/{username}/following/{target_user}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/gists/#list-gists-for-a-user
+ */
+ "GET /users/{username}/gists": Operation<"/users/{username}/gists", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#list-gpg-keys-for-a-user
+ */
+ "GET /users/{username}/gpg_keys": Operation<"/users/{username}/gpg_keys", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/users/#get-contextual-information-for-a-user
+ */
+ "GET /users/{username}/hovercard": Operation<"/users/{username}/hovercard", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps/#get-a-user-installation-for-the-authenticated-app
+ */
+ "GET /users/{username}/installation": Operation<"/users/{username}/installation", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#list-public-keys-for-a-user
+ */
+ "GET /users/{username}/keys": Operation<"/users/{username}/keys", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs/#list-organizations-for-a-user
+ */
+ "GET /users/{username}/orgs": Operation<"/users/{username}/orgs", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/packages#get-a-package-for-a-user
+ */
+ "GET /users/{username}/packages/{package_type}/{package_name}": Operation<"/users/{username}/packages/{package_type}/{package_name}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/packages#get-all-package-versions-for-a-package-owned-by-a-user
+ */
+ "GET /users/{username}/packages/{package_type}/{package_name}/versions": Operation<"/users/{username}/packages/{package_type}/{package_name}/versions", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/packages#get-a-package-version-for-a-user
+ */
+ "GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}": Operation<"/users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects/#list-user-projects
+ */
+ "GET /users/{username}/projects": Operation<"/users/{username}/projects", "get", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#list-events-received-by-the-authenticated-user
+ */
+ "GET /users/{username}/received_events": Operation<"/users/{username}/received_events", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#list-public-events-received-by-a-user
+ */
+ "GET /users/{username}/received_events/public": Operation<"/users/{username}/received_events/public", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#list-repositories-for-a-user
+ */
+ "GET /users/{username}/repos": Operation<"/users/{username}/repos", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/billing/#get-github-actions-billing-for-a-user
+ */
+ "GET /users/{username}/settings/billing/actions": Operation<"/users/{username}/settings/billing/actions", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/billing/#get-github-packages-billing-for-a-user
+ */
+ "GET /users/{username}/settings/billing/packages": Operation<"/users/{username}/settings/billing/packages", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/billing/#get-shared-storage-billing-for-a-user
+ */
+ "GET /users/{username}/settings/billing/shared-storage": Operation<"/users/{username}/settings/billing/shared-storage", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#list-repositories-starred-by-a-user
+ */
+ "GET /users/{username}/starred": Operation<"/users/{username}/starred", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#list-repositories-watched-by-a-user
+ */
+ "GET /users/{username}/subscriptions": Operation<"/users/{username}/subscriptions", "get">;
+ /**
+ * @see
+ */
+ "GET /zen": Operation<"/zen", "get">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#update-a-webhook-configuration-for-an-app
+ */
+ "PATCH /app/hook/config": Operation<"/app/hook/config", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#reset-a-token
+ */
+ "PATCH /applications/{client_id}/token": Operation<"/applications/{client_id}/token", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/oauth-authorizations#update-an-existing-authorization
+ */
+ "PATCH /authorizations/{authorization_id}": Operation<"/authorizations/{authorization_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#update-a-self-hosted-runner-group-for-an-enterprise
+ */
+ "PATCH /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/gists/#update-a-gist
+ */
+ "PATCH /gists/{gist_id}": Operation<"/gists/{gist_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/gists#update-a-gist-comment
+ */
+ "PATCH /gists/{gist_id}/comments/{comment_id}": Operation<"/gists/{gist_id}/comments/{comment_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#mark-a-thread-as-read
+ */
+ "PATCH /notifications/threads/{thread_id}": Operation<"/notifications/threads/{thread_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs/#update-an-organization
+ */
+ "PATCH /orgs/{org}": Operation<"/orgs/{org}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#update-a-self-hosted-runner-group-for-an-organization
+ */
+ "PATCH /orgs/{org}/actions/runner-groups/{runner_group_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#update-an-organization-webhook
+ */
+ "PATCH /orgs/{org}/hooks/{hook_id}": Operation<"/orgs/{org}/hooks/{hook_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#update-a-webhook-configuration-for-an-organization
+ */
+ "PATCH /orgs/{org}/hooks/{hook_id}/config": Operation<"/orgs/{org}/hooks/{hook_id}/config", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#update-a-team
+ */
+ "PATCH /orgs/{org}/teams/{team_slug}": Operation<"/orgs/{org}/teams/{team_slug}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#update-a-discussion
+ */
+ "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#update-a-discussion-comment
+ */
+ "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#create-or-update-idp-group-connections
+ */
+ "PATCH /orgs/{org}/teams/{team_slug}/team-sync/group-mappings": Operation<"/orgs/{org}/teams/{team_slug}/team-sync/group-mappings", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects#update-a-project-card
+ */
+ "PATCH /projects/columns/cards/{card_id}": Operation<"/projects/columns/cards/{card_id}", "patch", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects#update-a-project-column
+ */
+ "PATCH /projects/columns/{column_id}": Operation<"/projects/columns/{column_id}", "patch", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects/#update-a-project
+ */
+ "PATCH /projects/{project_id}": Operation<"/projects/{project_id}", "patch", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#update-a-repository
+ */
+ "PATCH /repos/{owner}/{repo}": Operation<"/repos/{owner}/{repo}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#update-pull-request-review-protection
+ */
+ "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#update-status-check-potection
+ */
+ "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/checks#update-a-check-run
+ */
+ "PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}": Operation<"/repos/{owner}/{repo}/check-runs/{check_run_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/checks#update-repository-preferences-for-check-suites
+ */
+ "PATCH /repos/{owner}/{repo}/check-suites/preferences": Operation<"/repos/{owner}/{repo}/check-suites/preferences", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/code-scanning#update-a-code-scanning-alert
+ */
+ "PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#update-a-commit-comment
+ */
+ "PATCH /repos/{owner}/{repo}/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/comments/{comment_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/git#update-a-reference
+ */
+ "PATCH /repos/{owner}/{repo}/git/refs/{ref}": Operation<"/repos/{owner}/{repo}/git/refs/{ref}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#update-a-repository-webhook
+ */
+ "PATCH /repos/{owner}/{repo}/hooks/{hook_id}": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#update-a-webhook-configuration-for-a-repository
+ */
+ "PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/config", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#update-an-import
+ */
+ "PATCH /repos/{owner}/{repo}/import": Operation<"/repos/{owner}/{repo}/import", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#map-a-commit-author
+ */
+ "PATCH /repos/{owner}/{repo}/import/authors/{author_id}": Operation<"/repos/{owner}/{repo}/import/authors/{author_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#update-git-lfs-preference
+ */
+ "PATCH /repos/{owner}/{repo}/import/lfs": Operation<"/repos/{owner}/{repo}/import/lfs", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#update-a-repository-invitation
+ */
+ "PATCH /repos/{owner}/{repo}/invitations/{invitation_id}": Operation<"/repos/{owner}/{repo}/invitations/{invitation_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#update-an-issue-comment
+ */
+ "PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues/#update-an-issue
+ */
+ "PATCH /repos/{owner}/{repo}/issues/{issue_number}": Operation<"/repos/{owner}/{repo}/issues/{issue_number}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#update-a-label
+ */
+ "PATCH /repos/{owner}/{repo}/labels/{name}": Operation<"/repos/{owner}/{repo}/labels/{name}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#update-a-milestone
+ */
+ "PATCH /repos/{owner}/{repo}/milestones/{milestone_number}": Operation<"/repos/{owner}/{repo}/milestones/{milestone_number}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls#update-a-review-comment-for-a-pull-request
+ */
+ "PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls/#update-a-pull-request
+ */
+ "PATCH /repos/{owner}/{repo}/pulls/{pull_number}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#update-a-release-asset
+ */
+ "PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}": Operation<"/repos/{owner}/{repo}/releases/assets/{asset_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#update-a-release
+ */
+ "PATCH /repos/{owner}/{repo}/releases/{release_id}": Operation<"/repos/{owner}/{repo}/releases/{release_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/secret-scanning#update-a-secret-scanning-alert
+ */
+ "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}": Operation<"/repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#update-an-attribute-for-a-scim-enterprise-group
+ */
+ "PATCH /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}": Operation<"/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#update-an-attribute-for-a-scim-enterprise-user
+ */
+ "PATCH /scim/v2/enterprises/{enterprise}/Users/{scim_user_id}": Operation<"/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/scim/#update-an-attribute-for-a-scim-user
+ */
+ "PATCH /scim/v2/organizations/{org}/Users/{scim_user_id}": Operation<"/scim/v2/organizations/{org}/Users/{scim_user_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#update-a-team-legacy
+ */
+ "PATCH /teams/{team_id}": Operation<"/teams/{team_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#update-a-discussion-legacy
+ */
+ "PATCH /teams/{team_id}/discussions/{discussion_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#update-a-discussion-comment-legacy
+ */
+ "PATCH /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#create-or-update-idp-group-connections-legacy
+ */
+ "PATCH /teams/{team_id}/team-sync/group-mappings": Operation<"/teams/{team_id}/team-sync/group-mappings", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/users/#update-the-authenticated-user
+ */
+ "PATCH /user": Operation<"/user", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#set-primary-email-visibility-for-the-authenticated-user
+ */
+ "PATCH /user/email/visibility": Operation<"/user/email/visibility", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#update-an-organization-membership-for-the-authenticated-user
+ */
+ "PATCH /user/memberships/orgs/{org}": Operation<"/user/memberships/orgs/{org}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#accept-a-repository-invitation
+ */
+ "PATCH /user/repository_invitations/{invitation_id}": Operation<"/user/repository_invitations/{invitation_id}", "patch">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps/#create-a-github-app-from-a-manifest
+ */
+ "POST /app-manifests/{code}/conversions": Operation<"/app-manifests/{code}/conversions", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps/#create-an-installation-access-token-for-an-app
+ */
+ "POST /app/installations/{installation_id}/access_tokens": Operation<"/app/installations/{installation_id}/access_tokens", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#check-a-token
+ */
+ "POST /applications/{client_id}/token": Operation<"/applications/{client_id}/token", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#create-a-scoped-access-token
+ */
+ "POST /applications/{client_id}/token/scoped": Operation<"/applications/{client_id}/token/scoped", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#reset-an-authorization
+ */
+ "POST /applications/{client_id}/tokens/{access_token}": Operation<"/applications/{client_id}/tokens/{access_token}", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/oauth-authorizations#create-a-new-authorization
+ */
+ "POST /authorizations": Operation<"/authorizations", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#create-a-content-attachment
+ */
+ "POST /content_references/{content_reference_id}/attachments": Operation<"/content_references/{content_reference_id}/attachments", "post", "corsair">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#create-self-hosted-runner-group-for-an-enterprise
+ */
+ "POST /enterprises/{enterprise}/actions/runner-groups": Operation<"/enterprises/{enterprise}/actions/runner-groups", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#create-a-registration-token-for-an-enterprise
+ */
+ "POST /enterprises/{enterprise}/actions/runners/registration-token": Operation<"/enterprises/{enterprise}/actions/runners/registration-token", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#create-a-remove-token-for-an-enterprise
+ */
+ "POST /enterprises/{enterprise}/actions/runners/remove-token": Operation<"/enterprises/{enterprise}/actions/runners/remove-token", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/gists/#create-a-gist
+ */
+ "POST /gists": Operation<"/gists", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/gists#create-a-gist-comment
+ */
+ "POST /gists/{gist_id}/comments": Operation<"/gists/{gist_id}/comments", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/gists/#fork-a-gist
+ */
+ "POST /gists/{gist_id}/forks": Operation<"/gists/{gist_id}/forks", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/markdown/#render-a-markdown-document
+ */
+ "POST /markdown": Operation<"/markdown", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/markdown/#render-a-markdown-document-in-raw-mode
+ */
+ "POST /markdown/raw": Operation<"/markdown/raw", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#create-a-self-hosted-runner-group-for-an-organization
+ */
+ "POST /orgs/{org}/actions/runner-groups": Operation<"/orgs/{org}/actions/runner-groups", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#create-a-registration-token-for-an-organization
+ */
+ "POST /orgs/{org}/actions/runners/registration-token": Operation<"/orgs/{org}/actions/runners/registration-token", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#create-a-remove-token-for-an-organization
+ */
+ "POST /orgs/{org}/actions/runners/remove-token": Operation<"/orgs/{org}/actions/runners/remove-token", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#create-an-organization-webhook
+ */
+ "POST /orgs/{org}/hooks": Operation<"/orgs/{org}/hooks", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#ping-an-organization-webhook
+ */
+ "POST /orgs/{org}/hooks/{hook_id}/pings": Operation<"/orgs/{org}/hooks/{hook_id}/pings", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#create-an-organization-invitation
+ */
+ "POST /orgs/{org}/invitations": Operation<"/orgs/{org}/invitations", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#start-an-organization-migration
+ */
+ "POST /orgs/{org}/migrations": Operation<"/orgs/{org}/migrations", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/packages#restore-a-package-for-an-organization
+ */
+ "POST /orgs/{org}/packages/{package_type}/{package_name}/restore": Operation<"/orgs/{org}/packages/{package_type}/{package_name}/restore", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/packages#restore-a-package-version-for-an-organization
+ */
+ "POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore": Operation<"/orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects/#create-an-organization-project
+ */
+ "POST /orgs/{org}/projects": Operation<"/orgs/{org}/projects", "post", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#create-an-organization-repository
+ */
+ "POST /orgs/{org}/repos": Operation<"/orgs/{org}/repos", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#create-a-team
+ */
+ "POST /orgs/{org}/teams": Operation<"/orgs/{org}/teams", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#create-a-discussion
+ */
+ "POST /orgs/{org}/teams/{team_slug}/discussions": Operation<"/orgs/{org}/teams/{team_slug}/discussions", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#create-a-discussion-comment
+ */
+ "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#create-reaction-for-a-team-discussion-comment
+ */
+ "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "post", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#create-reaction-for-a-team-discussion
+ */
+ "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions": Operation<"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "post", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects#move-a-project-card
+ */
+ "POST /projects/columns/cards/{card_id}/moves": Operation<"/projects/columns/cards/{card_id}/moves", "post", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects#create-a-project-card
+ */
+ "POST /projects/columns/{column_id}/cards": Operation<"/projects/columns/{column_id}/cards", "post", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects#move-a-project-column
+ */
+ "POST /projects/columns/{column_id}/moves": Operation<"/projects/columns/{column_id}/moves", "post", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects#create-a-project-column
+ */
+ "POST /projects/{project_id}/columns": Operation<"/projects/{project_id}/columns", "post", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#create-a-registration-token-for-a-repository
+ */
+ "POST /repos/{owner}/{repo}/actions/runners/registration-token": Operation<"/repos/{owner}/{repo}/actions/runners/registration-token", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#create-a-remove-token-for-a-repository
+ */
+ "POST /repos/{owner}/{repo}/actions/runners/remove-token": Operation<"/repos/{owner}/{repo}/actions/runners/remove-token", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#cancel-a-workflow-run
+ */
+ "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/cancel", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#review-pending-deployments-for-a-workflow-run
+ */
+ "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#re-run-a-workflow
+ */
+ "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun": Operation<"/repos/{owner}/{repo}/actions/runs/{run_id}/rerun", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#create-a-workflow-dispatch-event
+ */
+ "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#set-admin-branch-protection
+ */
+ "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#create-commit-signature-protection
+ */
+ "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", "post", "zzzax">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#add-status-check-contexts
+ */
+ "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#add-app-access-restrictions
+ */
+ "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#add-team-access-restrictions
+ */
+ "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#add-user-access-restrictions
+ */
+ "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#rename-a-branch
+ */
+ "POST /repos/{owner}/{repo}/branches/{branch}/rename": Operation<"/repos/{owner}/{repo}/branches/{branch}/rename", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/checks#create-a-check-run
+ */
+ "POST /repos/{owner}/{repo}/check-runs": Operation<"/repos/{owner}/{repo}/check-runs", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/checks#create-a-check-suite
+ */
+ "POST /repos/{owner}/{repo}/check-suites": Operation<"/repos/{owner}/{repo}/check-suites", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/checks#rerequest-a-check-suite
+ */
+ "POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest": Operation<"/repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/code-scanning#upload-an-analysis-as-sarif-data
+ */
+ "POST /repos/{owner}/{repo}/code-scanning/sarifs": Operation<"/repos/{owner}/{repo}/code-scanning/sarifs", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#create-reaction-for-a-commit-comment
+ */
+ "POST /repos/{owner}/{repo}/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/comments/{comment_id}/reactions", "post", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#create-a-commit-comment
+ */
+ "POST /repos/{owner}/{repo}/commits/{commit_sha}/comments": Operation<"/repos/{owner}/{repo}/commits/{commit_sha}/comments", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#create-a-deployment
+ */
+ "POST /repos/{owner}/{repo}/deployments": Operation<"/repos/{owner}/{repo}/deployments", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#create-a-deployment-status
+ */
+ "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses": Operation<"/repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#create-a-repository-dispatch-event
+ */
+ "POST /repos/{owner}/{repo}/dispatches": Operation<"/repos/{owner}/{repo}/dispatches", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#create-a-fork
+ */
+ "POST /repos/{owner}/{repo}/forks": Operation<"/repos/{owner}/{repo}/forks", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/git#create-a-blob
+ */
+ "POST /repos/{owner}/{repo}/git/blobs": Operation<"/repos/{owner}/{repo}/git/blobs", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/git#create-a-commit
+ */
+ "POST /repos/{owner}/{repo}/git/commits": Operation<"/repos/{owner}/{repo}/git/commits", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/git#create-a-reference
+ */
+ "POST /repos/{owner}/{repo}/git/refs": Operation<"/repos/{owner}/{repo}/git/refs", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/git#create-a-tag-object
+ */
+ "POST /repos/{owner}/{repo}/git/tags": Operation<"/repos/{owner}/{repo}/git/tags", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/git#create-a-tree
+ */
+ "POST /repos/{owner}/{repo}/git/trees": Operation<"/repos/{owner}/{repo}/git/trees", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#create-a-repository-webhook
+ */
+ "POST /repos/{owner}/{repo}/hooks": Operation<"/repos/{owner}/{repo}/hooks", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#ping-a-repository-webhook
+ */
+ "POST /repos/{owner}/{repo}/hooks/{hook_id}/pings": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/pings", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#test-the-push-repository-webhook
+ */
+ "POST /repos/{owner}/{repo}/hooks/{hook_id}/tests": Operation<"/repos/{owner}/{repo}/hooks/{hook_id}/tests", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues/#create-an-issue
+ */
+ "POST /repos/{owner}/{repo}/issues": Operation<"/repos/{owner}/{repo}/issues", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#create-reaction-for-an-issue-comment
+ */
+ "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "post", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#add-assignees-to-an-issue
+ */
+ "POST /repos/{owner}/{repo}/issues/{issue_number}/assignees": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/assignees", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#create-an-issue-comment
+ */
+ "POST /repos/{owner}/{repo}/issues/{issue_number}/comments": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/comments", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#add-labels-to-an-issue
+ */
+ "POST /repos/{owner}/{repo}/issues/{issue_number}/labels": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#create-reaction-for-an-issue
+ */
+ "POST /repos/{owner}/{repo}/issues/{issue_number}/reactions": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/reactions", "post", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#create-a-deploy-key
+ */
+ "POST /repos/{owner}/{repo}/keys": Operation<"/repos/{owner}/{repo}/keys", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#create-a-label
+ */
+ "POST /repos/{owner}/{repo}/labels": Operation<"/repos/{owner}/{repo}/labels", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#merge-a-branch
+ */
+ "POST /repos/{owner}/{repo}/merges": Operation<"/repos/{owner}/{repo}/merges", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#create-a-milestone
+ */
+ "POST /repos/{owner}/{repo}/milestones": Operation<"/repos/{owner}/{repo}/milestones", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#create-a-github-pages-site
+ */
+ "POST /repos/{owner}/{repo}/pages": Operation<"/repos/{owner}/{repo}/pages", "post", "switcheroo">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#request-a-github-pages-build
+ */
+ "POST /repos/{owner}/{repo}/pages/builds": Operation<"/repos/{owner}/{repo}/pages/builds", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects/#create-a-repository-project
+ */
+ "POST /repos/{owner}/{repo}/projects": Operation<"/repos/{owner}/{repo}/projects", "post", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls/#create-a-pull-request
+ */
+ "POST /repos/{owner}/{repo}/pulls": Operation<"/repos/{owner}/{repo}/pulls", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#create-reaction-for-a-pull-request-review-comment
+ */
+ "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions": Operation<"/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "post", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls#create-a-review-comment-for-a-pull-request
+ */
+ "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/comments", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls#create-a-reply-for-a-review-comment
+ */
+ "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls#request-reviewers-for-a-pull-request
+ */
+ "POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls#create-a-review-for-a-pull-request
+ */
+ "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls#submit-a-review-for-a-pull-request
+ */
+ "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#create-a-release
+ */
+ "POST /repos/{owner}/{repo}/releases": Operation<"/repos/{owner}/{repo}/releases", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#create-a-commit-status
+ */
+ "POST /repos/{owner}/{repo}/statuses/{sha}": Operation<"/repos/{owner}/{repo}/statuses/{sha}", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#transfer-a-repository
+ */
+ "POST /repos/{owner}/{repo}/transfer": Operation<"/repos/{owner}/{repo}/transfer", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#create-a-repository-using-a-template
+ */
+ "POST /repos/{template_owner}/{template_repo}/generate": Operation<"/repos/{template_owner}/{template_repo}/generate", "post", "baptiste">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#provision-a-scim-enterprise-group-and-invite-users
+ */
+ "POST /scim/v2/enterprises/{enterprise}/Groups": Operation<"/scim/v2/enterprises/{enterprise}/Groups", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#provision-and-invite-a-scim-enterprise-user
+ */
+ "POST /scim/v2/enterprises/{enterprise}/Users": Operation<"/scim/v2/enterprises/{enterprise}/Users", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/scim/#provision-and-invite-a-scim-user
+ */
+ "POST /scim/v2/organizations/{org}/Users": Operation<"/scim/v2/organizations/{org}/Users", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#create-a-discussion-legacy
+ */
+ "POST /teams/{team_id}/discussions": Operation<"/teams/{team_id}/discussions", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#create-a-discussion-comment-legacy
+ */
+ "POST /teams/{team_id}/discussions/{discussion_number}/comments": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#create-reaction-for-a-team-discussion-comment-legacy
+ */
+ "POST /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions": Operation<"/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "post", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/reactions/#create-reaction-for-a-team-discussion-legacy
+ */
+ "POST /teams/{team_id}/discussions/{discussion_number}/reactions": Operation<"/teams/{team_id}/discussions/{discussion_number}/reactions", "post", "squirrel-girl">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#add-an-email-address-for-the-authenticated-user
+ */
+ "POST /user/emails": Operation<"/user/emails", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#create-a-gpg-key-for-the-authenticated-user
+ */
+ "POST /user/gpg_keys": Operation<"/user/gpg_keys", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#create-a-public-ssh-key-for-the-authenticated-user
+ */
+ "POST /user/keys": Operation<"/user/keys", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#start-a-user-migration
+ */
+ "POST /user/migrations": Operation<"/user/migrations", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/packages#restore-a-package-for-the-authenticated-user
+ */
+ "POST /user/packages/{package_type}/{package_name}/restore": Operation<"/user/packages/{package_type}/{package_name}/restore", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/packages#restore-a-package-version-for-the-authenticated-user
+ */
+ "POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore": Operation<"/user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects/#create-a-user-project
+ */
+ "POST /user/projects": Operation<"/user/projects", "post", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#create-a-repository-for-the-authenticated-user
+ */
+ "POST /user/repos": Operation<"/user/repos", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#upload-a-release-asset
+ */
+ "POST {origin}/repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}": Operation<"/repos/{owner}/{repo}/releases/{release_id}/assets", "post">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps/#suspend-an-app-installation
+ */
+ "PUT /app/installations/{installation_id}/suspended": Operation<"/app/installations/{installation_id}/suspended", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/oauth-authorizations#get-or-create-an-authorization-for-a-specific-app
+ */
+ "PUT /authorizations/clients/{client_id}": Operation<"/authorizations/clients/{client_id}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/oauth-authorizations#get-or-create-an-authorization-for-a-specific-app-and-fingerprint
+ */
+ "PUT /authorizations/clients/{client_id}/{fingerprint}": Operation<"/authorizations/clients/{client_id}/{fingerprint}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#set-github-actions-permissions-for-an-enterprise
+ */
+ "PUT /enterprises/{enterprise}/actions/permissions": Operation<"/enterprises/{enterprise}/actions/permissions", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#set-selected-organizations-enabled-for-github-actions-in-an-enterprise
+ */
+ "PUT /enterprises/{enterprise}/actions/permissions/organizations": Operation<"/enterprises/{enterprise}/actions/permissions/organizations", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#enable-a-selected-organization-for-github-actions-in-an-enterprise
+ */
+ "PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}": Operation<"/enterprises/{enterprise}/actions/permissions/organizations/{org_id}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#set-allowed-actions-for-an-enterprise
+ */
+ "PUT /enterprises/{enterprise}/actions/permissions/selected-actions": Operation<"/enterprises/{enterprise}/actions/permissions/selected-actions", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#set-organization-access-to-a-self-hosted-runner-group-in-an-enterprise
+ */
+ "PUT /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#add-organization-access-to-a-self-hosted-runner-group-in-an-enterprise
+ */
+ "PUT /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations/{org_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations/{org_id}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#set-self-hosted-runners-in-a-group-for-an-enterprise
+ */
+ "PUT /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#add-a-self-hosted-runner-to-a-group-for-an-enterprise
+ */
+ "PUT /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": Operation<"/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners/{runner_id}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/gists/#star-a-gist
+ */
+ "PUT /gists/{gist_id}/star": Operation<"/gists/{gist_id}/star", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#mark-notifications-as-read
+ */
+ "PUT /notifications": Operation<"/notifications", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#set-a-thread-subscription
+ */
+ "PUT /notifications/threads/{thread_id}/subscription": Operation<"/notifications/threads/{thread_id}/subscription", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#set-github-actions-permissions-for-an-organization
+ */
+ "PUT /orgs/{org}/actions/permissions": Operation<"/orgs/{org}/actions/permissions", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#set-selected-repositories-enabled-for-github-actions-in-an-organization
+ */
+ "PUT /orgs/{org}/actions/permissions/repositories": Operation<"/orgs/{org}/actions/permissions/repositories", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#enable-a-selected-repository-for-github-actions-in-an-organization
+ */
+ "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}": Operation<"/orgs/{org}/actions/permissions/repositories/{repository_id}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#set-allowed-actions-for-an-organization
+ */
+ "PUT /orgs/{org}/actions/permissions/selected-actions": Operation<"/orgs/{org}/actions/permissions/selected-actions", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#set-repository-access-to-a-self-hosted-runner-group-in-an-organization
+ */
+ "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#add-repository-acess-to-a-self-hosted-runner-group-in-an-organization
+ */
+ "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#set-self-hosted-runners-in-a-group-for-an-organization
+ */
+ "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/runners": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#add-a-self-hosted-runner-to-a-group-for-an-organization
+ */
+ "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}": Operation<"/orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#create-or-update-an-organization-secret
+ */
+ "PUT /orgs/{org}/actions/secrets/{secret_name}": Operation<"/orgs/{org}/actions/secrets/{secret_name}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#set-selected-repositories-for-an-organization-secret
+ */
+ "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories": Operation<"/orgs/{org}/actions/secrets/{secret_name}/repositories", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#add-selected-repository-to-an-organization-secret
+ */
+ "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}": Operation<"/orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#block-a-user-from-an-organization
+ */
+ "PUT /orgs/{org}/blocks/{username}": Operation<"/orgs/{org}/blocks/{username}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/interactions#set-interaction-restrictions-for-an-organization
+ */
+ "PUT /orgs/{org}/interaction-limits": Operation<"/orgs/{org}/interaction-limits", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#set-organization-membership-for-a-user
+ */
+ "PUT /orgs/{org}/memberships/{username}": Operation<"/orgs/{org}/memberships/{username}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#convert-an-organization-member-to-outside-collaborator
+ */
+ "PUT /orgs/{org}/outside_collaborators/{username}": Operation<"/orgs/{org}/outside_collaborators/{username}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/orgs#set-public-organization-membership-for-the-authenticated-user
+ */
+ "PUT /orgs/{org}/public_members/{username}": Operation<"/orgs/{org}/public_members/{username}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#add-or-update-team-membership-for-a-user
+ */
+ "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}": Operation<"/orgs/{org}/teams/{team_slug}/memberships/{username}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#add-or-update-team-project-permissions
+ */
+ "PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}": Operation<"/orgs/{org}/teams/{team_slug}/projects/{project_id}", "put", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#add-or-update-team-repository-permissions
+ */
+ "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}": Operation<"/orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/projects#add-project-collaborator
+ */
+ "PUT /projects/{project_id}/collaborators/{username}": Operation<"/projects/{project_id}/collaborators/{username}", "put", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#set-github-actions-permissions-for-a-repository
+ */
+ "PUT /repos/{owner}/{repo}/actions/permissions": Operation<"/repos/{owner}/{repo}/actions/permissions", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#set-allowed-actions-for-a-repository
+ */
+ "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions": Operation<"/repos/{owner}/{repo}/actions/permissions/selected-actions", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#create-or-update-a-repository-secret
+ */
+ "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}": Operation<"/repos/{owner}/{repo}/actions/secrets/{secret_name}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#disable-a-workflow
+ */
+ "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#enable-a-workflow
+ */
+ "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable": Operation<"/repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#enable-automated-security-fixes
+ */
+ "PUT /repos/{owner}/{repo}/automated-security-fixes": Operation<"/repos/{owner}/{repo}/automated-security-fixes", "put", "london">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#update-branch-protection
+ */
+ "PUT /repos/{owner}/{repo}/branches/{branch}/protection": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#set-status-check-contexts
+ */
+ "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#set-app-access-restrictions
+ */
+ "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#set-team-access-restrictions
+ */
+ "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#set-user-access-restrictions
+ */
+ "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users": Operation<"/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#add-a-repository-collaborator
+ */
+ "PUT /repos/{owner}/{repo}/collaborators/{username}": Operation<"/repos/{owner}/{repo}/collaborators/{username}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#create-or-update-file-contents
+ */
+ "PUT /repos/{owner}/{repo}/contents/{path}": Operation<"/repos/{owner}/{repo}/contents/{path}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#create-or-update-an-environment
+ */
+ "PUT /repos/{owner}/{repo}/environments/{environment_name}": Operation<"/repos/{owner}/{repo}/environments/{environment_name}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/migrations#start-an-import
+ */
+ "PUT /repos/{owner}/{repo}/import": Operation<"/repos/{owner}/{repo}/import", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/interactions#set-interaction-restrictions-for-a-repository
+ */
+ "PUT /repos/{owner}/{repo}/interaction-limits": Operation<"/repos/{owner}/{repo}/interaction-limits", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues#set-labels-for-an-issue
+ */
+ "PUT /repos/{owner}/{repo}/issues/{issue_number}/labels": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/labels", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/issues/#lock-an-issue
+ */
+ "PUT /repos/{owner}/{repo}/issues/{issue_number}/lock": Operation<"/repos/{owner}/{repo}/issues/{issue_number}/lock", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#mark-repository-notifications-as-read
+ */
+ "PUT /repos/{owner}/{repo}/notifications": Operation<"/repos/{owner}/{repo}/notifications", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos#update-information-about-a-github-pages-site
+ */
+ "PUT /repos/{owner}/{repo}/pages": Operation<"/repos/{owner}/{repo}/pages", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls/#merge-a-pull-request
+ */
+ "PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/merge", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls#update-a-review-for-a-pull-request
+ */
+ "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls#dismiss-a-review-for-a-pull-request
+ */
+ "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/pulls/#update-a-pull-request-branch
+ */
+ "PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch": Operation<"/repos/{owner}/{repo}/pulls/{pull_number}/update-branch", "put", "lydian">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#set-a-repository-subscription
+ */
+ "PUT /repos/{owner}/{repo}/subscription": Operation<"/repos/{owner}/{repo}/subscription", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#replace-all-repository-topics
+ */
+ "PUT /repos/{owner}/{repo}/topics": Operation<"/repos/{owner}/{repo}/topics", "put", "mercy">;
+ /**
+ * @see https://docs.github.com/rest/reference/repos/#enable-vulnerability-alerts
+ */
+ "PUT /repos/{owner}/{repo}/vulnerability-alerts": Operation<"/repos/{owner}/{repo}/vulnerability-alerts", "put", "dorian">;
+ /**
+ * @see https://docs.github.com/rest/reference/actions#create-or-update-an-environment-secret
+ */
+ "PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}": Operation<"/repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#set-scim-information-for-a-provisioned-enterprise-group
+ */
+ "PUT /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}": Operation<"/scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/enterprise-admin#set-scim-information-for-a-provisioned-enterprise-user
+ */
+ "PUT /scim/v2/enterprises/{enterprise}/Users/{scim_user_id}": Operation<"/scim/v2/enterprises/{enterprise}/Users/{scim_user_id}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/scim/#set-scim-information-for-a-provisioned-user
+ */
+ "PUT /scim/v2/organizations/{org}/Users/{scim_user_id}": Operation<"/scim/v2/organizations/{org}/Users/{scim_user_id}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#add-team-member-legacy
+ */
+ "PUT /teams/{team_id}/members/{username}": Operation<"/teams/{team_id}/members/{username}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams#add-or-update-team-membership-for-a-user-legacy
+ */
+ "PUT /teams/{team_id}/memberships/{username}": Operation<"/teams/{team_id}/memberships/{username}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#add-or-update-team-project-permissions-legacy
+ */
+ "PUT /teams/{team_id}/projects/{project_id}": Operation<"/teams/{team_id}/projects/{project_id}", "put", "inertia">;
+ /**
+ * @see https://docs.github.com/rest/reference/teams/#add-or-update-team-repository-permissions-legacy
+ */
+ "PUT /teams/{team_id}/repos/{owner}/{repo}": Operation<"/teams/{team_id}/repos/{owner}/{repo}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#block-a-user
+ */
+ "PUT /user/blocks/{username}": Operation<"/user/blocks/{username}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/users#follow-a-user
+ */
+ "PUT /user/following/{username}": Operation<"/user/following/{username}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/apps#add-a-repository-to-an-app-installation
+ */
+ "PUT /user/installations/{installation_id}/repositories/{repository_id}": Operation<"/user/installations/{installation_id}/repositories/{repository_id}", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/interactions#set-interaction-restrictions-for-your-public-repositories
+ */
+ "PUT /user/interaction-limits": Operation<"/user/interaction-limits", "put">;
+ /**
+ * @see https://docs.github.com/rest/reference/activity#star-a-repository-for-the-authenticated-user
+ */
+ "PUT /user/starred/{owner}/{repo}": Operation<"/user/starred/{owner}/{repo}", "put">;
+}
+export {};
diff --git a/node_modules/@octokit/types/dist-types/index.d.ts b/node_modules/@octokit/types/dist-types/index.d.ts
new file mode 100644
index 0000000..004ae9b
--- /dev/null
+++ b/node_modules/@octokit/types/dist-types/index.d.ts
@@ -0,0 +1,21 @@
+export * from "./AuthInterface";
+export * from "./EndpointDefaults";
+export * from "./EndpointInterface";
+export * from "./EndpointOptions";
+export * from "./Fetch";
+export * from "./OctokitResponse";
+export * from "./RequestError";
+export * from "./RequestHeaders";
+export * from "./RequestInterface";
+export * from "./RequestMethod";
+export * from "./RequestOptions";
+export * from "./RequestParameters";
+export * from "./RequestRequestOptions";
+export * from "./ResponseHeaders";
+export * from "./Route";
+export * from "./Signal";
+export * from "./StrategyInterface";
+export * from "./Url";
+export * from "./VERSION";
+export * from "./GetResponseTypeFromEndpointMethod";
+export * from "./generated/Endpoints";
diff --git a/node_modules/@octokit/types/dist-web/index.js b/node_modules/@octokit/types/dist-web/index.js
new file mode 100644
index 0000000..b1f2bb0
--- /dev/null
+++ b/node_modules/@octokit/types/dist-web/index.js
@@ -0,0 +1,4 @@
+const VERSION = "6.12.2";
+
+export { VERSION };
+//# sourceMappingURL=index.js.map
diff --git a/node_modules/@octokit/types/dist-web/index.js.map b/node_modules/@octokit/types/dist-web/index.js.map
new file mode 100644
index 0000000..cd0e254
--- /dev/null
+++ b/node_modules/@octokit/types/dist-web/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["../dist-src/VERSION.js"],"sourcesContent":["export const VERSION = \"0.0.0-development\";\n"],"names":[],"mappings":"AAAY,MAAC,OAAO,GAAG;;;;"}
\ No newline at end of file
diff --git a/node_modules/@octokit/types/package.json b/node_modules/@octokit/types/package.json
new file mode 100644
index 0000000..0bbb2cb
--- /dev/null
+++ b/node_modules/@octokit/types/package.json
@@ -0,0 +1,90 @@
+{
+ "_from": "@octokit/types@^6.0.3",
+ "_id": "@octokit/types@6.12.2",
+ "_inBundle": false,
+ "_integrity": "sha512-kCkiN8scbCmSq+gwdJV0iLgHc0O/GTPY1/cffo9kECu1MvatLPh9E+qFhfRIktKfHEA6ZYvv6S1B4Wnv3bi3pA==",
+ "_location": "/@octokit/types",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "@octokit/types@^6.0.3",
+ "name": "@octokit/types",
+ "escapedName": "@octokit%2ftypes",
+ "scope": "@octokit",
+ "rawSpec": "^6.0.3",
+ "saveSpec": null,
+ "fetchSpec": "^6.0.3"
+ },
+ "_requiredBy": [
+ "/@octokit/endpoint",
+ "/@octokit/graphql",
+ "/@octokit/request",
+ "/@octokit/request-error"
+ ],
+ "_resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.12.2.tgz",
+ "_shasum": "5b44add079a478b8eb27d78cf384cc47e4411362",
+ "_spec": "@octokit/types@^6.0.3",
+ "_where": "D:\\Work\\Actions\\setup-helm\\node_modules\\@octokit\\graphql",
+ "bugs": {
+ "url": "https://github.com/octokit/types.ts/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "@octokit/openapi-types": "^5.3.2"
+ },
+ "deprecated": false,
+ "description": "Shared TypeScript definitions for Octokit projects",
+ "devDependencies": {
+ "@octokit/graphql": "^4.2.2",
+ "@pika/pack": "^0.5.0",
+ "@pika/plugin-build-node": "^0.9.0",
+ "@pika/plugin-build-web": "^0.9.0",
+ "@pika/plugin-ts-standard-pkg": "^0.9.0",
+ "@types/node": ">= 8",
+ "handlebars": "^4.7.6",
+ "json-schema-to-typescript": "^10.0.0",
+ "lodash.set": "^4.3.2",
+ "npm-run-all": "^4.1.5",
+ "pascal-case": "^3.1.1",
+ "pika-plugin-merge-properties": "^1.0.6",
+ "prettier": "^2.0.0",
+ "semantic-release": "^17.0.0",
+ "semantic-release-plugin-update-version-in-files": "^1.0.0",
+ "sort-keys": "^4.0.0",
+ "string-to-jsdoc-comment": "^1.0.0",
+ "typedoc": "^0.20.0",
+ "typescript": "^4.0.2"
+ },
+ "files": [
+ "dist-*/",
+ "bin/"
+ ],
+ "homepage": "https://github.com/octokit/types.ts#readme",
+ "keywords": [
+ "github",
+ "api",
+ "sdk",
+ "toolkit",
+ "typescript"
+ ],
+ "license": "MIT",
+ "main": "dist-node/index.js",
+ "module": "dist-web/index.js",
+ "name": "@octokit/types",
+ "octokit": {
+ "openapi-version": "2.13.3"
+ },
+ "pika": true,
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/octokit/types.ts.git"
+ },
+ "sideEffects": false,
+ "source": "dist-src/index.js",
+ "types": "dist-types/index.d.ts",
+ "version": "6.12.2"
+}
diff --git a/node_modules/deprecation/LICENSE b/node_modules/deprecation/LICENSE
new file mode 100644
index 0000000..1683b58
--- /dev/null
+++ b/node_modules/deprecation/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Gregor Martynus and contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/deprecation/README.md b/node_modules/deprecation/README.md
new file mode 100644
index 0000000..648809d
--- /dev/null
+++ b/node_modules/deprecation/README.md
@@ -0,0 +1,77 @@
+# deprecation
+
+> Log a deprecation message with stack
+
+
+
+## Usage
+
+
+
+
+Browsers
+ |
+
+Load `deprecation` directly from [cdn.pika.dev](https://cdn.pika.dev)
+
+```html
+
+```
+
+ |
+
+Node
+ |
+
+Install with `npm install deprecation`
+
+```js
+const { Deprecation } = require("deprecation");
+// or: import { Deprecation } from "deprecation";
+```
+
+ |
+
+
+
+```js
+function foo() {
+ bar();
+}
+
+function bar() {
+ baz();
+}
+
+function baz() {
+ console.warn(new Deprecation("[my-lib] foo() is deprecated, use bar()"));
+}
+
+foo();
+// { Deprecation: [my-lib] foo() is deprecated, use bar()
+// at baz (/path/to/file.js:12:15)
+// at bar (/path/to/file.js:8:3)
+// at foo (/path/to/file.js:4:3)
+```
+
+To log a deprecation message only once, you can use the [once](https://www.npmjs.com/package/once) module.
+
+```js
+const Deprecation = require("deprecation");
+const once = require("once");
+
+const deprecateFoo = once(console.warn);
+
+function foo() {
+ deprecateFoo(new Deprecation("[my-lib] foo() is deprecated, use bar()"));
+}
+
+foo();
+foo(); // logs nothing
+```
+
+## License
+
+[ISC](LICENSE)
diff --git a/node_modules/deprecation/dist-node/index.js b/node_modules/deprecation/dist-node/index.js
new file mode 100644
index 0000000..9da1775
--- /dev/null
+++ b/node_modules/deprecation/dist-node/index.js
@@ -0,0 +1,20 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+class Deprecation extends Error {
+ constructor(message) {
+ super(message); // Maintains proper stack trace (only available on V8)
+
+ /* istanbul ignore next */
+
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, this.constructor);
+ }
+
+ this.name = 'Deprecation';
+ }
+
+}
+
+exports.Deprecation = Deprecation;
diff --git a/node_modules/deprecation/dist-src/index.js b/node_modules/deprecation/dist-src/index.js
new file mode 100644
index 0000000..7950fdc
--- /dev/null
+++ b/node_modules/deprecation/dist-src/index.js
@@ -0,0 +1,14 @@
+export class Deprecation extends Error {
+ constructor(message) {
+ super(message); // Maintains proper stack trace (only available on V8)
+
+ /* istanbul ignore next */
+
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, this.constructor);
+ }
+
+ this.name = 'Deprecation';
+ }
+
+}
\ No newline at end of file
diff --git a/node_modules/deprecation/dist-types/index.d.ts b/node_modules/deprecation/dist-types/index.d.ts
new file mode 100644
index 0000000..e3ae7ad
--- /dev/null
+++ b/node_modules/deprecation/dist-types/index.d.ts
@@ -0,0 +1,3 @@
+export class Deprecation extends Error {
+ name: "Deprecation";
+}
diff --git a/node_modules/deprecation/dist-web/index.js b/node_modules/deprecation/dist-web/index.js
new file mode 100644
index 0000000..c6bbda7
--- /dev/null
+++ b/node_modules/deprecation/dist-web/index.js
@@ -0,0 +1,16 @@
+class Deprecation extends Error {
+ constructor(message) {
+ super(message); // Maintains proper stack trace (only available on V8)
+
+ /* istanbul ignore next */
+
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, this.constructor);
+ }
+
+ this.name = 'Deprecation';
+ }
+
+}
+
+export { Deprecation };
diff --git a/node_modules/deprecation/package.json b/node_modules/deprecation/package.json
new file mode 100644
index 0000000..cea1bf6
--- /dev/null
+++ b/node_modules/deprecation/package.json
@@ -0,0 +1,64 @@
+{
+ "_from": "deprecation@^2.0.0",
+ "_id": "deprecation@2.3.1",
+ "_inBundle": false,
+ "_integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==",
+ "_location": "/deprecation",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "deprecation@^2.0.0",
+ "name": "deprecation",
+ "escapedName": "deprecation",
+ "rawSpec": "^2.0.0",
+ "saveSpec": null,
+ "fetchSpec": "^2.0.0"
+ },
+ "_requiredBy": [
+ "/@octokit/request",
+ "/@octokit/request-error"
+ ],
+ "_resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
+ "_shasum": "6368cbdb40abf3373b525ac87e4a260c3a700919",
+ "_spec": "deprecation@^2.0.0",
+ "_where": "D:\\Work\\Actions\\setup-helm\\node_modules\\@octokit\\request",
+ "bugs": {
+ "url": "https://github.com/gr2m/deprecation/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {},
+ "deprecated": false,
+ "description": "Log a deprecation message with stack",
+ "devDependencies": {
+ "@pika/pack": "^0.3.7",
+ "@pika/plugin-build-node": "^0.4.0",
+ "@pika/plugin-build-types": "^0.4.0",
+ "@pika/plugin-build-web": "^0.4.0",
+ "@pika/plugin-standard-pkg": "^0.4.0",
+ "semantic-release": "^15.13.3"
+ },
+ "esnext": "dist-src/index.js",
+ "files": [
+ "dist-*/",
+ "bin/"
+ ],
+ "homepage": "https://github.com/gr2m/deprecation#readme",
+ "keywords": [
+ "deprecate",
+ "deprecated",
+ "deprecation"
+ ],
+ "license": "ISC",
+ "main": "dist-node/index.js",
+ "module": "dist-web/index.js",
+ "name": "deprecation",
+ "pika": true,
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/gr2m/deprecation.git"
+ },
+ "sideEffects": false,
+ "types": "dist-types/index.d.ts",
+ "version": "2.3.1"
+}
diff --git a/node_modules/is-plain-object/LICENSE b/node_modules/is-plain-object/LICENSE
new file mode 100644
index 0000000..3f2eca1
--- /dev/null
+++ b/node_modules/is-plain-object/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014-2017, Jon Schlinkert.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/is-plain-object/README.md b/node_modules/is-plain-object/README.md
new file mode 100644
index 0000000..5c074ab
--- /dev/null
+++ b/node_modules/is-plain-object/README.md
@@ -0,0 +1,125 @@
+# is-plain-object [](https://www.npmjs.com/package/is-plain-object) [](https://npmjs.org/package/is-plain-object) [](https://npmjs.org/package/is-plain-object) [](https://travis-ci.org/jonschlinkert/is-plain-object)
+
+> Returns true if an object was created by the `Object` constructor, or Object.create(null).
+
+Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
+
+## Install
+
+Install with [npm](https://www.npmjs.com/):
+
+```sh
+$ npm install --save is-plain-object
+```
+
+Use [isobject](https://github.com/jonschlinkert/isobject) if you only want to check if the value is an object and not an array or null.
+
+## Usage
+
+with es modules
+```js
+import { isPlainObject } from 'is-plain-object';
+```
+
+or with commonjs
+```js
+const { isPlainObject } = require('is-plain-object');
+```
+
+**true** when created by the `Object` constructor, or Object.create(null).
+
+```js
+isPlainObject(Object.create({}));
+//=> true
+isPlainObject(Object.create(Object.prototype));
+//=> true
+isPlainObject({foo: 'bar'});
+//=> true
+isPlainObject({});
+//=> true
+isPlainObject(null);
+//=> true
+```
+
+**false** when not created by the `Object` constructor.
+
+```js
+isPlainObject(1);
+//=> false
+isPlainObject(['foo', 'bar']);
+//=> false
+isPlainObject([]);
+//=> false
+isPlainObject(new Foo);
+//=> false
+isPlainObject(Object.create(null));
+//=> false
+```
+
+## About
+
+
+Contributing
+
+Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
+
+
+
+
+Running Tests
+
+Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
+
+```sh
+$ npm install && npm test
+```
+
+
+
+
+Building docs
+
+_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
+
+To generate the readme, run the following command:
+
+```sh
+$ npm install -g verbose/verb#dev verb-generate-readme && verb
+```
+
+
+
+### Related projects
+
+You might also be interested in these projects:
+
+* [is-number](https://www.npmjs.com/package/is-number): Returns true if a number or string value is a finite number. Useful for regex… [more](https://github.com/jonschlinkert/is-number) | [homepage](https://github.com/jonschlinkert/is-number "Returns true if a number or string value is a finite number. Useful for regex matches, parsing, user input, etc.")
+* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.")
+* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.")
+
+### Contributors
+
+| **Commits** | **Contributor** |
+| --- | --- |
+| 19 | [jonschlinkert](https://github.com/jonschlinkert) |
+| 6 | [TrySound](https://github.com/TrySound) |
+| 6 | [stevenvachon](https://github.com/stevenvachon) |
+| 3 | [onokumus](https://github.com/onokumus) |
+| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) |
+
+### Author
+
+**Jon Schlinkert**
+
+* [GitHub Profile](https://github.com/jonschlinkert)
+* [Twitter Profile](https://twitter.com/jonschlinkert)
+* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
+
+### License
+
+Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert).
+Released under the [MIT License](LICENSE).
+
+***
+
+_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 28, 2019._
diff --git a/node_modules/is-plain-object/dist/is-plain-object.js b/node_modules/is-plain-object/dist/is-plain-object.js
new file mode 100644
index 0000000..d134e4f
--- /dev/null
+++ b/node_modules/is-plain-object/dist/is-plain-object.js
@@ -0,0 +1,38 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+/*!
+ * is-plain-object
+ *
+ * Copyright (c) 2014-2017, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+function isObject(o) {
+ return Object.prototype.toString.call(o) === '[object Object]';
+}
+
+function isPlainObject(o) {
+ var ctor,prot;
+
+ if (isObject(o) === false) return false;
+
+ // If has modified constructor
+ ctor = o.constructor;
+ if (ctor === undefined) return true;
+
+ // If has modified prototype
+ prot = ctor.prototype;
+ if (isObject(prot) === false) return false;
+
+ // If constructor does not have an Object-specific method
+ if (prot.hasOwnProperty('isPrototypeOf') === false) {
+ return false;
+ }
+
+ // Most likely a plain Object
+ return true;
+}
+
+exports.isPlainObject = isPlainObject;
diff --git a/node_modules/is-plain-object/dist/is-plain-object.mjs b/node_modules/is-plain-object/dist/is-plain-object.mjs
new file mode 100644
index 0000000..c2d9f35
--- /dev/null
+++ b/node_modules/is-plain-object/dist/is-plain-object.mjs
@@ -0,0 +1,34 @@
+/*!
+ * is-plain-object
+ *
+ * Copyright (c) 2014-2017, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+function isObject(o) {
+ return Object.prototype.toString.call(o) === '[object Object]';
+}
+
+function isPlainObject(o) {
+ var ctor,prot;
+
+ if (isObject(o) === false) return false;
+
+ // If has modified constructor
+ ctor = o.constructor;
+ if (ctor === undefined) return true;
+
+ // If has modified prototype
+ prot = ctor.prototype;
+ if (isObject(prot) === false) return false;
+
+ // If constructor does not have an Object-specific method
+ if (prot.hasOwnProperty('isPrototypeOf') === false) {
+ return false;
+ }
+
+ // Most likely a plain Object
+ return true;
+}
+
+export { isPlainObject };
diff --git a/node_modules/is-plain-object/is-plain-object.d.ts b/node_modules/is-plain-object/is-plain-object.d.ts
new file mode 100644
index 0000000..a359940
--- /dev/null
+++ b/node_modules/is-plain-object/is-plain-object.d.ts
@@ -0,0 +1 @@
+export function isPlainObject(o: any): boolean;
diff --git a/node_modules/is-plain-object/package.json b/node_modules/is-plain-object/package.json
new file mode 100644
index 0000000..fc82b4b
--- /dev/null
+++ b/node_modules/is-plain-object/package.json
@@ -0,0 +1,131 @@
+{
+ "_from": "is-plain-object@^5.0.0",
+ "_id": "is-plain-object@5.0.0",
+ "_inBundle": false,
+ "_integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "_location": "/is-plain-object",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "is-plain-object@^5.0.0",
+ "name": "is-plain-object",
+ "escapedName": "is-plain-object",
+ "rawSpec": "^5.0.0",
+ "saveSpec": null,
+ "fetchSpec": "^5.0.0"
+ },
+ "_requiredBy": [
+ "/@octokit/endpoint",
+ "/@octokit/request"
+ ],
+ "_resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "_shasum": "4427f50ab3429e9025ea7d52e9043a9ef4159344",
+ "_spec": "is-plain-object@^5.0.0",
+ "_where": "D:\\Work\\Actions\\setup-helm\\node_modules\\@octokit\\request",
+ "author": {
+ "name": "Jon Schlinkert",
+ "url": "https://github.com/jonschlinkert"
+ },
+ "bugs": {
+ "url": "https://github.com/jonschlinkert/is-plain-object/issues"
+ },
+ "bundleDependencies": false,
+ "contributors": [
+ {
+ "name": "Jon Schlinkert",
+ "url": "http://twitter.com/jonschlinkert"
+ },
+ {
+ "name": "Osman Nuri Okumuş",
+ "url": "http://onokumus.com"
+ },
+ {
+ "name": "Steven Vachon",
+ "url": "https://svachon.com"
+ },
+ {
+ "url": "https://github.com/wtgtybhertgeghgtwtg"
+ },
+ {
+ "name": "Bogdan Chadkin",
+ "url": "https://github.com/TrySound"
+ }
+ ],
+ "deprecated": false,
+ "description": "Returns true if an object was created by the `Object` constructor, or Object.create(null).",
+ "devDependencies": {
+ "chai": "^4.2.0",
+ "esm": "^3.2.22",
+ "gulp-format-md": "^1.0.0",
+ "mocha": "^6.1.4",
+ "mocha-headless-chrome": "^3.1.0",
+ "rollup": "^2.22.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "exports": {
+ ".": {
+ "import": "./dist/is-plain-object.mjs",
+ "require": "./dist/is-plain-object.js"
+ },
+ "./package.json": "./package.json"
+ },
+ "files": [
+ "is-plain-object.d.ts",
+ "dist"
+ ],
+ "homepage": "https://github.com/jonschlinkert/is-plain-object",
+ "keywords": [
+ "check",
+ "is",
+ "is-object",
+ "isobject",
+ "javascript",
+ "kind",
+ "kind-of",
+ "object",
+ "plain",
+ "type",
+ "typeof",
+ "value"
+ ],
+ "license": "MIT",
+ "main": "dist/is-plain-object.js",
+ "module": "dist/is-plain-object.mjs",
+ "name": "is-plain-object",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jonschlinkert/is-plain-object.git"
+ },
+ "scripts": {
+ "build": "rollup -c",
+ "prepare": "rollup -c",
+ "test": "npm run test_node && npm run build && npm run test_browser",
+ "test_browser": "mocha-headless-chrome --args=disable-web-security -f test/browser.html",
+ "test_node": "mocha -r esm"
+ },
+ "types": "is-plain-object.d.ts",
+ "verb": {
+ "toc": false,
+ "layout": "default",
+ "tasks": [
+ "readme"
+ ],
+ "plugins": [
+ "gulp-format-md"
+ ],
+ "related": {
+ "list": [
+ "is-number",
+ "isobject",
+ "kind-of"
+ ]
+ },
+ "lint": {
+ "reflinks": true
+ }
+ },
+ "version": "5.0.0"
+}
diff --git a/node_modules/node-fetch/CHANGELOG.md b/node_modules/node-fetch/CHANGELOG.md
new file mode 100644
index 0000000..543d3d9
--- /dev/null
+++ b/node_modules/node-fetch/CHANGELOG.md
@@ -0,0 +1,272 @@
+
+Changelog
+=========
+
+
+# 2.x release
+
+## v2.6.1
+
+**This is an important security release. It is strongly recommended to update as soon as possible.**
+
+- Fix: honor the `size` option after following a redirect.
+
+## v2.6.0
+
+- Enhance: `options.agent`, it now accepts a function that returns custom http(s).Agent instance based on current URL, see readme for more information.
+- Fix: incorrect `Content-Length` was returned for stream body in 2.5.0 release; note that `node-fetch` doesn't calculate content length for stream body.
+- Fix: `Response.url` should return empty string instead of `null` by default.
+
+## v2.5.0
+
+- Enhance: `Response` object now includes `redirected` property.
+- Enhance: `fetch()` now accepts third-party `Blob` implementation as body.
+- Other: disable `package-lock.json` generation as we never commit them.
+- Other: dev dependency update.
+- Other: readme update.
+
+## v2.4.1
+
+- Fix: `Blob` import rule for node < 10, as `Readable` isn't a named export.
+
+## v2.4.0
+
+- Enhance: added `Brotli` compression support (using node's zlib).
+- Enhance: updated `Blob` implementation per spec.
+- Fix: set content type automatically for `URLSearchParams`.
+- Fix: `Headers` now reject empty header names.
+- Fix: test cases, as node 12+ no longer accepts invalid header response.
+
+## v2.3.0
+
+- Enhance: added `AbortSignal` support, with README example.
+- Enhance: handle invalid `Location` header during redirect by rejecting them explicitly with `FetchError`.
+- Fix: update `browser.js` to support react-native environment, where `self` isn't available globally.
+
+## v2.2.1
+
+- Fix: `compress` flag shouldn't overwrite existing `Accept-Encoding` header.
+- Fix: multiple `import` rules, where `PassThrough` etc. doesn't have a named export when using node <10 and `--exerimental-modules` flag.
+- Other: Better README.
+
+## v2.2.0
+
+- Enhance: Support all `ArrayBuffer` view types
+- Enhance: Support Web Workers
+- Enhance: Support Node.js' `--experimental-modules` mode; deprecate `.es.js` file
+- Fix: Add `__esModule` property to the exports object
+- Other: Better example in README for writing response to a file
+- Other: More tests for Agent
+
+## v2.1.2
+
+- Fix: allow `Body` methods to work on `ArrayBuffer`-backed `Body` objects
+- Fix: reject promise returned by `Body` methods when the accumulated `Buffer` exceeds the maximum size
+- Fix: support custom `Host` headers with any casing
+- Fix: support importing `fetch()` from TypeScript in `browser.js`
+- Fix: handle the redirect response body properly
+
+## v2.1.1
+
+Fix packaging errors in v2.1.0.
+
+## v2.1.0
+
+- Enhance: allow using ArrayBuffer as the `body` of a `fetch()` or `Request`
+- Fix: store HTTP headers of a `Headers` object internally with the given case, for compatibility with older servers that incorrectly treated header names in a case-sensitive manner
+- Fix: silently ignore invalid HTTP headers
+- Fix: handle HTTP redirect responses without a `Location` header just like non-redirect responses
+- Fix: include bodies when following a redirection when appropriate
+
+## v2.0.0
+
+This is a major release. Check [our upgrade guide](https://github.com/bitinn/node-fetch/blob/master/UPGRADE-GUIDE.md) for an overview on some key differences between v1 and v2.
+
+### General changes
+
+- Major: Node.js 0.10.x and 0.12.x support is dropped
+- Major: `require('node-fetch/lib/response')` etc. is now unsupported; use `require('node-fetch').Response` or ES6 module imports
+- Enhance: start testing on Node.js v4.x, v6.x, v8.x LTS, as well as v9.x stable
+- Enhance: use Rollup to produce a distributed bundle (less memory overhead and faster startup)
+- Enhance: make `Object.prototype.toString()` on Headers, Requests, and Responses return correct class strings
+- Other: rewrite in ES2015 using Babel
+- Other: use Codecov for code coverage tracking
+- Other: update package.json script for npm 5
+- Other: `encoding` module is now optional (alpha.7)
+- Other: expose browser.js through package.json, avoid bundling mishaps (alpha.9)
+- Other: allow TypeScript to `import` node-fetch by exposing default (alpha.9)
+
+### HTTP requests
+
+- Major: overwrite user's `Content-Length` if we can be sure our information is correct (per spec)
+- Fix: errors in a response are caught before the body is accessed
+- Fix: support WHATWG URL objects, created by `whatwg-url` package or `require('url').URL` in Node.js 7+
+
+### Response and Request classes
+
+- Major: `response.text()` no longer attempts to detect encoding, instead always opting for UTF-8 (per spec); use `response.textConverted()` for the v1 behavior
+- Major: make `response.json()` throw error instead of returning an empty object on 204 no-content respose (per spec; reverts behavior changed in v1.6.2)
+- Major: internal methods are no longer exposed
+- Major: throw error when a `GET` or `HEAD` Request is constructed with a non-null body (per spec)
+- Enhance: add `response.arrayBuffer()` (also applies to Requests)
+- Enhance: add experimental `response.blob()` (also applies to Requests)
+- Enhance: `URLSearchParams` is now accepted as a body
+- Enhance: wrap `response.json()` json parsing error as `FetchError`
+- Fix: fix Request and Response with `null` body
+
+### Headers class
+
+- Major: remove `headers.getAll()`; make `get()` return all headers delimited by commas (per spec)
+- Enhance: make Headers iterable
+- Enhance: make Headers constructor accept an array of tuples
+- Enhance: make sure header names and values are valid in HTTP
+- Fix: coerce Headers prototype function parameters to strings, where applicable
+
+### Documentation
+
+- Enhance: more comprehensive API docs
+- Enhance: add a list of default headers in README
+
+
+# 1.x release
+
+## backport releases (v1.7.0 and beyond)
+
+See [changelog on 1.x branch](https://github.com/bitinn/node-fetch/blob/1.x/CHANGELOG.md) for details.
+
+## v1.6.3
+
+- Enhance: error handling document to explain `FetchError` design
+- Fix: support `form-data` 2.x releases (requires `form-data` >= 2.1.0)
+
+## v1.6.2
+
+- Enhance: minor document update
+- Fix: response.json() returns empty object on 204 no-content response instead of throwing a syntax error
+
+## v1.6.1
+
+- Fix: if `res.body` is a non-stream non-formdata object, we will call `body.toString` and send it as a string
+- Fix: `counter` value is incorrectly set to `follow` value when wrapping Request instance
+- Fix: documentation update
+
+## v1.6.0
+
+- Enhance: added `res.buffer()` api for convenience, it returns body as a Node.js buffer
+- Enhance: better old server support by handling raw deflate response
+- Enhance: skip encoding detection for non-HTML/XML response
+- Enhance: minor document update
+- Fix: HEAD request doesn't need decompression, as body is empty
+- Fix: `req.body` now accepts a Node.js buffer
+
+## v1.5.3
+
+- Fix: handle 204 and 304 responses when body is empty but content-encoding is gzip/deflate
+- Fix: allow resolving response and cloned response in any order
+- Fix: avoid setting `content-length` when `form-data` body use streams
+- Fix: send DELETE request with content-length when body is present
+- Fix: allow any url when calling new Request, but still reject non-http(s) url in fetch
+
+## v1.5.2
+
+- Fix: allow node.js core to handle keep-alive connection pool when passing a custom agent
+
+## v1.5.1
+
+- Fix: redirect mode `manual` should work even when there is no redirection or broken redirection
+
+## v1.5.0
+
+- Enhance: rejected promise now use custom `Error` (thx to @pekeler)
+- Enhance: `FetchError` contains `err.type` and `err.code`, allows for better error handling (thx to @pekeler)
+- Enhance: basic support for redirect mode `manual` and `error`, allows for location header extraction (thx to @jimmywarting for the initial PR)
+
+## v1.4.1
+
+- Fix: wrapping Request instance with FormData body again should preserve the body as-is
+
+## v1.4.0
+
+- Enhance: Request and Response now have `clone` method (thx to @kirill-konshin for the initial PR)
+- Enhance: Request and Response now have proper string and buffer body support (thx to @kirill-konshin)
+- Enhance: Body constructor has been refactored out (thx to @kirill-konshin)
+- Enhance: Headers now has `forEach` method (thx to @tricoder42)
+- Enhance: back to 100% code coverage
+- Fix: better form-data support (thx to @item4)
+- Fix: better character encoding detection under chunked encoding (thx to @dsuket for the initial PR)
+
+## v1.3.3
+
+- Fix: make sure `Content-Length` header is set when body is string for POST/PUT/PATCH requests
+- Fix: handle body stream error, for cases such as incorrect `Content-Encoding` header
+- Fix: when following certain redirects, use `GET` on subsequent request per Fetch Spec
+- Fix: `Request` and `Response` constructors now parse headers input using `Headers`
+
+## v1.3.2
+
+- Enhance: allow auto detect of form-data input (no `FormData` spec on node.js, this is form-data specific feature)
+
+## v1.3.1
+
+- Enhance: allow custom host header to be set (server-side only feature, as it's a forbidden header on client-side)
+
+## v1.3.0
+
+- Enhance: now `fetch.Request` is exposed as well
+
+## v1.2.1
+
+- Enhance: `Headers` now normalized `Number` value to `String`, prevent common mistakes
+
+## v1.2.0
+
+- Enhance: now fetch.Headers and fetch.Response are exposed, making testing easier
+
+## v1.1.2
+
+- Fix: `Headers` should only support `String` and `Array` properties, and ignore others
+
+## v1.1.1
+
+- Enhance: now req.headers accept both plain object and `Headers` instance
+
+## v1.1.0
+
+- Enhance: timeout now also applies to response body (in case of slow response)
+- Fix: timeout is now cleared properly when fetch is done/has failed
+
+## v1.0.6
+
+- Fix: less greedy content-type charset matching
+
+## v1.0.5
+
+- Fix: when `follow = 0`, fetch should not follow redirect
+- Enhance: update tests for better coverage
+- Enhance: code formatting
+- Enhance: clean up doc
+
+## v1.0.4
+
+- Enhance: test iojs support
+- Enhance: timeout attached to socket event only fire once per redirect
+
+## v1.0.3
+
+- Fix: response size limit should reject large chunk
+- Enhance: added character encoding detection for xml, such as rss/atom feed (encoding in DTD)
+
+## v1.0.2
+
+- Fix: added res.ok per spec change
+
+## v1.0.0
+
+- Enhance: better test coverage and doc
+
+
+# 0.x release
+
+## v0.1
+
+- Major: initial public release
diff --git a/node_modules/node-fetch/LICENSE.md b/node_modules/node-fetch/LICENSE.md
new file mode 100644
index 0000000..660ffec
--- /dev/null
+++ b/node_modules/node-fetch/LICENSE.md
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 David Frank
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
diff --git a/node_modules/node-fetch/README.md b/node_modules/node-fetch/README.md
new file mode 100644
index 0000000..2dde742
--- /dev/null
+++ b/node_modules/node-fetch/README.md
@@ -0,0 +1,590 @@
+node-fetch
+==========
+
+[![npm version][npm-image]][npm-url]
+[![build status][travis-image]][travis-url]
+[![coverage status][codecov-image]][codecov-url]
+[![install size][install-size-image]][install-size-url]
+[![Discord][discord-image]][discord-url]
+
+A light-weight module that brings `window.fetch` to Node.js
+
+(We are looking for [v2 maintainers and collaborators](https://github.com/bitinn/node-fetch/issues/567))
+
+[![Backers][opencollective-image]][opencollective-url]
+
+
+
+- [Motivation](#motivation)
+- [Features](#features)
+- [Difference from client-side fetch](#difference-from-client-side-fetch)
+- [Installation](#installation)
+- [Loading and configuring the module](#loading-and-configuring-the-module)
+- [Common Usage](#common-usage)
+ - [Plain text or HTML](#plain-text-or-html)
+ - [JSON](#json)
+ - [Simple Post](#simple-post)
+ - [Post with JSON](#post-with-json)
+ - [Post with form parameters](#post-with-form-parameters)
+ - [Handling exceptions](#handling-exceptions)
+ - [Handling client and server errors](#handling-client-and-server-errors)
+- [Advanced Usage](#advanced-usage)
+ - [Streams](#streams)
+ - [Buffer](#buffer)
+ - [Accessing Headers and other Meta data](#accessing-headers-and-other-meta-data)
+ - [Extract Set-Cookie Header](#extract-set-cookie-header)
+ - [Post data using a file stream](#post-data-using-a-file-stream)
+ - [Post with form-data (detect multipart)](#post-with-form-data-detect-multipart)
+ - [Request cancellation with AbortSignal](#request-cancellation-with-abortsignal)
+- [API](#api)
+ - [fetch(url[, options])](#fetchurl-options)
+ - [Options](#options)
+ - [Class: Request](#class-request)
+ - [Class: Response](#class-response)
+ - [Class: Headers](#class-headers)
+ - [Interface: Body](#interface-body)
+ - [Class: FetchError](#class-fetcherror)
+- [License](#license)
+- [Acknowledgement](#acknowledgement)
+
+
+
+## Motivation
+
+Instead of implementing `XMLHttpRequest` in Node.js to run browser-specific [Fetch polyfill](https://github.com/github/fetch), why not go from native `http` to `fetch` API directly? Hence, `node-fetch`, minimal code for a `window.fetch` compatible API on Node.js runtime.
+
+See Matt Andrews' [isomorphic-fetch](https://github.com/matthew-andrews/isomorphic-fetch) or Leonardo Quixada's [cross-fetch](https://github.com/lquixada/cross-fetch) for isomorphic usage (exports `node-fetch` for server-side, `whatwg-fetch` for client-side).
+
+## Features
+
+- Stay consistent with `window.fetch` API.
+- Make conscious trade-off when following [WHATWG fetch spec][whatwg-fetch] and [stream spec](https://streams.spec.whatwg.org/) implementation details, document known differences.
+- Use native promise but allow substituting it with [insert your favorite promise library].
+- Use native Node streams for body on both request and response.
+- Decode content encoding (gzip/deflate) properly and convert string output (such as `res.text()` and `res.json()`) to UTF-8 automatically.
+- Useful extensions such as timeout, redirect limit, response size limit, [explicit errors](ERROR-HANDLING.md) for troubleshooting.
+
+## Difference from client-side fetch
+
+- See [Known Differences](LIMITS.md) for details.
+- If you happen to use a missing feature that `window.fetch` offers, feel free to open an issue.
+- Pull requests are welcomed too!
+
+## Installation
+
+Current stable release (`2.x`)
+
+```sh
+$ npm install node-fetch
+```
+
+## Loading and configuring the module
+We suggest you load the module via `require` until the stabilization of ES modules in node:
+```js
+const fetch = require('node-fetch');
+```
+
+If you are using a Promise library other than native, set it through `fetch.Promise`:
+```js
+const Bluebird = require('bluebird');
+
+fetch.Promise = Bluebird;
+```
+
+## Common Usage
+
+NOTE: The documentation below is up-to-date with `2.x` releases; see the [`1.x` readme](https://github.com/bitinn/node-fetch/blob/1.x/README.md), [changelog](https://github.com/bitinn/node-fetch/blob/1.x/CHANGELOG.md) and [2.x upgrade guide](UPGRADE-GUIDE.md) for the differences.
+
+#### Plain text or HTML
+```js
+fetch('https://github.com/')
+ .then(res => res.text())
+ .then(body => console.log(body));
+```
+
+#### JSON
+
+```js
+
+fetch('https://api.github.com/users/github')
+ .then(res => res.json())
+ .then(json => console.log(json));
+```
+
+#### Simple Post
+```js
+fetch('https://httpbin.org/post', { method: 'POST', body: 'a=1' })
+ .then(res => res.json()) // expecting a json response
+ .then(json => console.log(json));
+```
+
+#### Post with JSON
+
+```js
+const body = { a: 1 };
+
+fetch('https://httpbin.org/post', {
+ method: 'post',
+ body: JSON.stringify(body),
+ headers: { 'Content-Type': 'application/json' },
+ })
+ .then(res => res.json())
+ .then(json => console.log(json));
+```
+
+#### Post with form parameters
+`URLSearchParams` is available in Node.js as of v7.5.0. See [official documentation](https://nodejs.org/api/url.html#url_class_urlsearchparams) for more usage methods.
+
+NOTE: The `Content-Type` header is only set automatically to `x-www-form-urlencoded` when an instance of `URLSearchParams` is given as such:
+
+```js
+const { URLSearchParams } = require('url');
+
+const params = new URLSearchParams();
+params.append('a', 1);
+
+fetch('https://httpbin.org/post', { method: 'POST', body: params })
+ .then(res => res.json())
+ .then(json => console.log(json));
+```
+
+#### Handling exceptions
+NOTE: 3xx-5xx responses are *NOT* exceptions and should be handled in `then()`; see the next section for more information.
+
+Adding a catch to the fetch promise chain will catch *all* exceptions, such as errors originating from node core libraries, network errors and operational errors, which are instances of FetchError. See the [error handling document](ERROR-HANDLING.md) for more details.
+
+```js
+fetch('https://domain.invalid/')
+ .catch(err => console.error(err));
+```
+
+#### Handling client and server errors
+It is common to create a helper function to check that the response contains no client (4xx) or server (5xx) error responses:
+
+```js
+function checkStatus(res) {
+ if (res.ok) { // res.status >= 200 && res.status < 300
+ return res;
+ } else {
+ throw MyCustomError(res.statusText);
+ }
+}
+
+fetch('https://httpbin.org/status/400')
+ .then(checkStatus)
+ .then(res => console.log('will not get here...'))
+```
+
+## Advanced Usage
+
+#### Streams
+The "Node.js way" is to use streams when possible:
+
+```js
+fetch('https://assets-cdn.github.com/images/modules/logos_page/Octocat.png')
+ .then(res => {
+ const dest = fs.createWriteStream('./octocat.png');
+ res.body.pipe(dest);
+ });
+```
+
+#### Buffer
+If you prefer to cache binary data in full, use buffer(). (NOTE: `buffer()` is a `node-fetch`-only API)
+
+```js
+const fileType = require('file-type');
+
+fetch('https://assets-cdn.github.com/images/modules/logos_page/Octocat.png')
+ .then(res => res.buffer())
+ .then(buffer => fileType(buffer))
+ .then(type => { /* ... */ });
+```
+
+#### Accessing Headers and other Meta data
+```js
+fetch('https://github.com/')
+ .then(res => {
+ console.log(res.ok);
+ console.log(res.status);
+ console.log(res.statusText);
+ console.log(res.headers.raw());
+ console.log(res.headers.get('content-type'));
+ });
+```
+
+#### Extract Set-Cookie Header
+
+Unlike browsers, you can access raw `Set-Cookie` headers manually using `Headers.raw()`. This is a `node-fetch` only API.
+
+```js
+fetch(url).then(res => {
+ // returns an array of values, instead of a string of comma-separated values
+ console.log(res.headers.raw()['set-cookie']);
+});
+```
+
+#### Post data using a file stream
+
+```js
+const { createReadStream } = require('fs');
+
+const stream = createReadStream('input.txt');
+
+fetch('https://httpbin.org/post', { method: 'POST', body: stream })
+ .then(res => res.json())
+ .then(json => console.log(json));
+```
+
+#### Post with form-data (detect multipart)
+
+```js
+const FormData = require('form-data');
+
+const form = new FormData();
+form.append('a', 1);
+
+fetch('https://httpbin.org/post', { method: 'POST', body: form })
+ .then(res => res.json())
+ .then(json => console.log(json));
+
+// OR, using custom headers
+// NOTE: getHeaders() is non-standard API
+
+const form = new FormData();
+form.append('a', 1);
+
+const options = {
+ method: 'POST',
+ body: form,
+ headers: form.getHeaders()
+}
+
+fetch('https://httpbin.org/post', options)
+ .then(res => res.json())
+ .then(json => console.log(json));
+```
+
+#### Request cancellation with AbortSignal
+
+> NOTE: You may cancel streamed requests only on Node >= v8.0.0
+
+You may cancel requests with `AbortController`. A suggested implementation is [`abort-controller`](https://www.npmjs.com/package/abort-controller).
+
+An example of timing out a request after 150ms could be achieved as the following:
+
+```js
+import AbortController from 'abort-controller';
+
+const controller = new AbortController();
+const timeout = setTimeout(
+ () => { controller.abort(); },
+ 150,
+);
+
+fetch(url, { signal: controller.signal })
+ .then(res => res.json())
+ .then(
+ data => {
+ useData(data)
+ },
+ err => {
+ if (err.name === 'AbortError') {
+ // request was aborted
+ }
+ },
+ )
+ .finally(() => {
+ clearTimeout(timeout);
+ });
+```
+
+See [test cases](https://github.com/bitinn/node-fetch/blob/master/test/test.js) for more examples.
+
+
+## API
+
+### fetch(url[, options])
+
+- `url` A string representing the URL for fetching
+- `options` [Options](#fetch-options) for the HTTP(S) request
+- Returns: Promise<[Response](#class-response)>
+
+Perform an HTTP(S) fetch.
+
+`url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.
+
+
+### Options
+
+The default values are shown after each option key.
+
+```js
+{
+ // These properties are part of the Fetch Standard
+ method: 'GET',
+ headers: {}, // request headers. format is the identical to that accepted by the Headers constructor (see below)
+ body: null, // request body. can be null, a string, a Buffer, a Blob, or a Node.js Readable stream
+ redirect: 'follow', // set to `manual` to extract redirect headers, `error` to reject redirect
+ signal: null, // pass an instance of AbortSignal to optionally abort requests
+
+ // The following properties are node-fetch extensions
+ follow: 20, // maximum redirect count. 0 to not follow redirect
+ timeout: 0, // req/res timeout in ms, it resets on redirect. 0 to disable (OS limit applies). Signal is recommended instead.
+ compress: true, // support gzip/deflate content encoding. false to disable
+ size: 0, // maximum response body size in bytes. 0 to disable
+ agent: null // http(s).Agent instance or function that returns an instance (see below)
+}
+```
+
+##### Default Headers
+
+If no values are set, the following request headers will be sent automatically:
+
+Header | Value
+------------------- | --------------------------------------------------------
+`Accept-Encoding` | `gzip,deflate` _(when `options.compress === true`)_
+`Accept` | `*/*`
+`Connection` | `close` _(when no `options.agent` is present)_
+`Content-Length` | _(automatically calculated, if possible)_
+`Transfer-Encoding` | `chunked` _(when `req.body` is a stream)_
+`User-Agent` | `node-fetch/1.0 (+https://github.com/bitinn/node-fetch)`
+
+Note: when `body` is a `Stream`, `Content-Length` is not set automatically.
+
+##### Custom Agent
+
+The `agent` option allows you to specify networking related options which are out of the scope of Fetch, including and not limited to the following:
+
+- Support self-signed certificate
+- Use only IPv4 or IPv6
+- Custom DNS Lookup
+
+See [`http.Agent`](https://nodejs.org/api/http.html#http_new_agent_options) for more information.
+
+In addition, the `agent` option accepts a function that returns `http`(s)`.Agent` instance given current [URL](https://nodejs.org/api/url.html), this is useful during a redirection chain across HTTP and HTTPS protocol.
+
+```js
+const httpAgent = new http.Agent({
+ keepAlive: true
+});
+const httpsAgent = new https.Agent({
+ keepAlive: true
+});
+
+const options = {
+ agent: function (_parsedURL) {
+ if (_parsedURL.protocol == 'http:') {
+ return httpAgent;
+ } else {
+ return httpsAgent;
+ }
+ }
+}
+```
+
+
+### Class: Request
+
+An HTTP(S) request containing information about URL, method, headers, and the body. This class implements the [Body](#iface-body) interface.
+
+Due to the nature of Node.js, the following properties are not implemented at this moment:
+
+- `type`
+- `destination`
+- `referrer`
+- `referrerPolicy`
+- `mode`
+- `credentials`
+- `cache`
+- `integrity`
+- `keepalive`
+
+The following node-fetch extension properties are provided:
+
+- `follow`
+- `compress`
+- `counter`
+- `agent`
+
+See [options](#fetch-options) for exact meaning of these extensions.
+
+#### new Request(input[, options])
+
+*(spec-compliant)*
+
+- `input` A string representing a URL, or another `Request` (which will be cloned)
+- `options` [Options][#fetch-options] for the HTTP(S) request
+
+Constructs a new `Request` object. The constructor is identical to that in the [browser](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request).
+
+In most cases, directly `fetch(url, options)` is simpler than creating a `Request` object.
+
+
+### Class: Response
+
+An HTTP(S) response. This class implements the [Body](#iface-body) interface.
+
+The following properties are not implemented in node-fetch at this moment:
+
+- `Response.error()`
+- `Response.redirect()`
+- `type`
+- `trailer`
+
+#### new Response([body[, options]])
+
+*(spec-compliant)*
+
+- `body` A `String` or [`Readable` stream][node-readable]
+- `options` A [`ResponseInit`][response-init] options dictionary
+
+Constructs a new `Response` object. The constructor is identical to that in the [browser](https://developer.mozilla.org/en-US/docs/Web/API/Response/Response).
+
+Because Node.js does not implement service workers (for which this class was designed), one rarely has to construct a `Response` directly.
+
+#### response.ok
+
+*(spec-compliant)*
+
+Convenience property representing if the request ended normally. Will evaluate to true if the response status was greater than or equal to 200 but smaller than 300.
+
+#### response.redirected
+
+*(spec-compliant)*
+
+Convenience property representing if the request has been redirected at least once. Will evaluate to true if the internal redirect counter is greater than 0.
+
+
+### Class: Headers
+
+This class allows manipulating and iterating over a set of HTTP headers. All methods specified in the [Fetch Standard][whatwg-fetch] are implemented.
+
+#### new Headers([init])
+
+*(spec-compliant)*
+
+- `init` Optional argument to pre-fill the `Headers` object
+
+Construct a new `Headers` object. `init` can be either `null`, a `Headers` object, an key-value map object or any iterable object.
+
+```js
+// Example adapted from https://fetch.spec.whatwg.org/#example-headers-class
+
+const meta = {
+ 'Content-Type': 'text/xml',
+ 'Breaking-Bad': '<3'
+};
+const headers = new Headers(meta);
+
+// The above is equivalent to
+const meta = [
+ [ 'Content-Type', 'text/xml' ],
+ [ 'Breaking-Bad', '<3' ]
+];
+const headers = new Headers(meta);
+
+// You can in fact use any iterable objects, like a Map or even another Headers
+const meta = new Map();
+meta.set('Content-Type', 'text/xml');
+meta.set('Breaking-Bad', '<3');
+const headers = new Headers(meta);
+const copyOfHeaders = new Headers(headers);
+```
+
+
+### Interface: Body
+
+`Body` is an abstract interface with methods that are applicable to both `Request` and `Response` classes.
+
+The following methods are not yet implemented in node-fetch at this moment:
+
+- `formData()`
+
+#### body.body
+
+*(deviation from spec)*
+
+* Node.js [`Readable` stream][node-readable]
+
+Data are encapsulated in the `Body` object. Note that while the [Fetch Standard][whatwg-fetch] requires the property to always be a WHATWG `ReadableStream`, in node-fetch it is a Node.js [`Readable` stream][node-readable].
+
+#### body.bodyUsed
+
+*(spec-compliant)*
+
+* `Boolean`
+
+A boolean property for if this body has been consumed. Per the specs, a consumed body cannot be used again.
+
+#### body.arrayBuffer()
+#### body.blob()
+#### body.json()
+#### body.text()
+
+*(spec-compliant)*
+
+* Returns: Promise
+
+Consume the body and return a promise that will resolve to one of these formats.
+
+#### body.buffer()
+
+*(node-fetch extension)*
+
+* Returns: Promise<Buffer>
+
+Consume the body and return a promise that will resolve to a Buffer.
+
+#### body.textConverted()
+
+*(node-fetch extension)*
+
+* Returns: Promise<String>
+
+Identical to `body.text()`, except instead of always converting to UTF-8, encoding sniffing will be performed and text converted to UTF-8 if possible.
+
+(This API requires an optional dependency of the npm package [encoding](https://www.npmjs.com/package/encoding), which you need to install manually. `webpack` users may see [a warning message](https://github.com/bitinn/node-fetch/issues/412#issuecomment-379007792) due to this optional dependency.)
+
+
+### Class: FetchError
+
+*(node-fetch extension)*
+
+An operational error in the fetching process. See [ERROR-HANDLING.md][] for more info.
+
+
+### Class: AbortError
+
+*(node-fetch extension)*
+
+An Error thrown when the request is aborted in response to an `AbortSignal`'s `abort` event. It has a `name` property of `AbortError`. See [ERROR-HANDLING.MD][] for more info.
+
+## Acknowledgement
+
+Thanks to [github/fetch](https://github.com/github/fetch) for providing a solid implementation reference.
+
+`node-fetch` v1 was maintained by [@bitinn](https://github.com/bitinn); v2 was maintained by [@TimothyGu](https://github.com/timothygu), [@bitinn](https://github.com/bitinn) and [@jimmywarting](https://github.com/jimmywarting); v2 readme is written by [@jkantr](https://github.com/jkantr).
+
+## License
+
+MIT
+
+[npm-image]: https://flat.badgen.net/npm/v/node-fetch
+[npm-url]: https://www.npmjs.com/package/node-fetch
+[travis-image]: https://flat.badgen.net/travis/bitinn/node-fetch
+[travis-url]: https://travis-ci.org/bitinn/node-fetch
+[codecov-image]: https://flat.badgen.net/codecov/c/github/bitinn/node-fetch/master
+[codecov-url]: https://codecov.io/gh/bitinn/node-fetch
+[install-size-image]: https://flat.badgen.net/packagephobia/install/node-fetch
+[install-size-url]: https://packagephobia.now.sh/result?p=node-fetch
+[discord-image]: https://img.shields.io/discord/619915844268326952?color=%237289DA&label=Discord&style=flat-square
+[discord-url]: https://discord.gg/Zxbndcm
+[opencollective-image]: https://opencollective.com/node-fetch/backers.svg
+[opencollective-url]: https://opencollective.com/node-fetch
+[whatwg-fetch]: https://fetch.spec.whatwg.org/
+[response-init]: https://fetch.spec.whatwg.org/#responseinit
+[node-readable]: https://nodejs.org/api/stream.html#stream_readable_streams
+[mdn-headers]: https://developer.mozilla.org/en-US/docs/Web/API/Headers
+[LIMITS.md]: https://github.com/bitinn/node-fetch/blob/master/LIMITS.md
+[ERROR-HANDLING.md]: https://github.com/bitinn/node-fetch/blob/master/ERROR-HANDLING.md
+[UPGRADE-GUIDE.md]: https://github.com/bitinn/node-fetch/blob/master/UPGRADE-GUIDE.md
diff --git a/node_modules/node-fetch/browser.js b/node_modules/node-fetch/browser.js
new file mode 100644
index 0000000..83c54c5
--- /dev/null
+++ b/node_modules/node-fetch/browser.js
@@ -0,0 +1,25 @@
+"use strict";
+
+// ref: https://github.com/tc39/proposal-global
+var getGlobal = function () {
+ // the only reliable means to get the global object is
+ // `Function('return this')()`
+ // However, this causes CSP violations in Chrome apps.
+ if (typeof self !== 'undefined') { return self; }
+ if (typeof window !== 'undefined') { return window; }
+ if (typeof global !== 'undefined') { return global; }
+ throw new Error('unable to locate global object');
+}
+
+var global = getGlobal();
+
+module.exports = exports = global.fetch;
+
+// Needed for TypeScript and Webpack.
+if (global.fetch) {
+ exports.default = global.fetch.bind(global);
+}
+
+exports.Headers = global.Headers;
+exports.Request = global.Request;
+exports.Response = global.Response;
\ No newline at end of file
diff --git a/node_modules/node-fetch/lib/index.es.js b/node_modules/node-fetch/lib/index.es.js
new file mode 100644
index 0000000..61906c9
--- /dev/null
+++ b/node_modules/node-fetch/lib/index.es.js
@@ -0,0 +1,1640 @@
+process.emitWarning("The .es.js file is deprecated. Use .mjs instead.");
+
+import Stream from 'stream';
+import http from 'http';
+import Url from 'url';
+import https from 'https';
+import zlib from 'zlib';
+
+// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js
+
+// fix for "Readable" isn't a named export issue
+const Readable = Stream.Readable;
+
+const BUFFER = Symbol('buffer');
+const TYPE = Symbol('type');
+
+class Blob {
+ constructor() {
+ this[TYPE] = '';
+
+ const blobParts = arguments[0];
+ const options = arguments[1];
+
+ const buffers = [];
+ let size = 0;
+
+ if (blobParts) {
+ const a = blobParts;
+ const length = Number(a.length);
+ for (let i = 0; i < length; i++) {
+ const element = a[i];
+ let buffer;
+ if (element instanceof Buffer) {
+ buffer = element;
+ } else if (ArrayBuffer.isView(element)) {
+ buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);
+ } else if (element instanceof ArrayBuffer) {
+ buffer = Buffer.from(element);
+ } else if (element instanceof Blob) {
+ buffer = element[BUFFER];
+ } else {
+ buffer = Buffer.from(typeof element === 'string' ? element : String(element));
+ }
+ size += buffer.length;
+ buffers.push(buffer);
+ }
+ }
+
+ this[BUFFER] = Buffer.concat(buffers);
+
+ let type = options && options.type !== undefined && String(options.type).toLowerCase();
+ if (type && !/[^\u0020-\u007E]/.test(type)) {
+ this[TYPE] = type;
+ }
+ }
+ get size() {
+ return this[BUFFER].length;
+ }
+ get type() {
+ return this[TYPE];
+ }
+ text() {
+ return Promise.resolve(this[BUFFER].toString());
+ }
+ arrayBuffer() {
+ const buf = this[BUFFER];
+ const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+ return Promise.resolve(ab);
+ }
+ stream() {
+ const readable = new Readable();
+ readable._read = function () {};
+ readable.push(this[BUFFER]);
+ readable.push(null);
+ return readable;
+ }
+ toString() {
+ return '[object Blob]';
+ }
+ slice() {
+ const size = this.size;
+
+ const start = arguments[0];
+ const end = arguments[1];
+ let relativeStart, relativeEnd;
+ if (start === undefined) {
+ relativeStart = 0;
+ } else if (start < 0) {
+ relativeStart = Math.max(size + start, 0);
+ } else {
+ relativeStart = Math.min(start, size);
+ }
+ if (end === undefined) {
+ relativeEnd = size;
+ } else if (end < 0) {
+ relativeEnd = Math.max(size + end, 0);
+ } else {
+ relativeEnd = Math.min(end, size);
+ }
+ const span = Math.max(relativeEnd - relativeStart, 0);
+
+ const buffer = this[BUFFER];
+ const slicedBuffer = buffer.slice(relativeStart, relativeStart + span);
+ const blob = new Blob([], { type: arguments[2] });
+ blob[BUFFER] = slicedBuffer;
+ return blob;
+ }
+}
+
+Object.defineProperties(Blob.prototype, {
+ size: { enumerable: true },
+ type: { enumerable: true },
+ slice: { enumerable: true }
+});
+
+Object.defineProperty(Blob.prototype, Symbol.toStringTag, {
+ value: 'Blob',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+/**
+ * fetch-error.js
+ *
+ * FetchError interface for operational errors
+ */
+
+/**
+ * Create FetchError instance
+ *
+ * @param String message Error message for human
+ * @param String type Error type for machine
+ * @param String systemError For Node.js system error
+ * @return FetchError
+ */
+function FetchError(message, type, systemError) {
+ Error.call(this, message);
+
+ this.message = message;
+ this.type = type;
+
+ // when err.type is `system`, err.code contains system error code
+ if (systemError) {
+ this.code = this.errno = systemError.code;
+ }
+
+ // hide custom error implementation details from end-users
+ Error.captureStackTrace(this, this.constructor);
+}
+
+FetchError.prototype = Object.create(Error.prototype);
+FetchError.prototype.constructor = FetchError;
+FetchError.prototype.name = 'FetchError';
+
+let convert;
+try {
+ convert = require('encoding').convert;
+} catch (e) {}
+
+const INTERNALS = Symbol('Body internals');
+
+// fix an issue where "PassThrough" isn't a named export for node <10
+const PassThrough = Stream.PassThrough;
+
+/**
+ * Body mixin
+ *
+ * Ref: https://fetch.spec.whatwg.org/#body
+ *
+ * @param Stream body Readable stream
+ * @param Object opts Response options
+ * @return Void
+ */
+function Body(body) {
+ var _this = this;
+
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+ _ref$size = _ref.size;
+
+ let size = _ref$size === undefined ? 0 : _ref$size;
+ var _ref$timeout = _ref.timeout;
+ let timeout = _ref$timeout === undefined ? 0 : _ref$timeout;
+
+ if (body == null) {
+ // body is undefined or null
+ body = null;
+ } else if (isURLSearchParams(body)) {
+ // body is a URLSearchParams
+ body = Buffer.from(body.toString());
+ } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
+ // body is ArrayBuffer
+ body = Buffer.from(body);
+ } else if (ArrayBuffer.isView(body)) {
+ // body is ArrayBufferView
+ body = Buffer.from(body.buffer, body.byteOffset, body.byteLength);
+ } else if (body instanceof Stream) ; else {
+ // none of the above
+ // coerce to string then buffer
+ body = Buffer.from(String(body));
+ }
+ this[INTERNALS] = {
+ body,
+ disturbed: false,
+ error: null
+ };
+ this.size = size;
+ this.timeout = timeout;
+
+ if (body instanceof Stream) {
+ body.on('error', function (err) {
+ const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);
+ _this[INTERNALS].error = error;
+ });
+ }
+}
+
+Body.prototype = {
+ get body() {
+ return this[INTERNALS].body;
+ },
+
+ get bodyUsed() {
+ return this[INTERNALS].disturbed;
+ },
+
+ /**
+ * Decode response as ArrayBuffer
+ *
+ * @return Promise
+ */
+ arrayBuffer() {
+ return consumeBody.call(this).then(function (buf) {
+ return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+ });
+ },
+
+ /**
+ * Return raw response as Blob
+ *
+ * @return Promise
+ */
+ blob() {
+ let ct = this.headers && this.headers.get('content-type') || '';
+ return consumeBody.call(this).then(function (buf) {
+ return Object.assign(
+ // Prevent copying
+ new Blob([], {
+ type: ct.toLowerCase()
+ }), {
+ [BUFFER]: buf
+ });
+ });
+ },
+
+ /**
+ * Decode response as json
+ *
+ * @return Promise
+ */
+ json() {
+ var _this2 = this;
+
+ return consumeBody.call(this).then(function (buffer) {
+ try {
+ return JSON.parse(buffer.toString());
+ } catch (err) {
+ return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));
+ }
+ });
+ },
+
+ /**
+ * Decode response as text
+ *
+ * @return Promise
+ */
+ text() {
+ return consumeBody.call(this).then(function (buffer) {
+ return buffer.toString();
+ });
+ },
+
+ /**
+ * Decode response as buffer (non-spec api)
+ *
+ * @return Promise
+ */
+ buffer() {
+ return consumeBody.call(this);
+ },
+
+ /**
+ * Decode response as text, while automatically detecting the encoding and
+ * trying to decode to UTF-8 (non-spec api)
+ *
+ * @return Promise
+ */
+ textConverted() {
+ var _this3 = this;
+
+ return consumeBody.call(this).then(function (buffer) {
+ return convertBody(buffer, _this3.headers);
+ });
+ }
+};
+
+// In browsers, all properties are enumerable.
+Object.defineProperties(Body.prototype, {
+ body: { enumerable: true },
+ bodyUsed: { enumerable: true },
+ arrayBuffer: { enumerable: true },
+ blob: { enumerable: true },
+ json: { enumerable: true },
+ text: { enumerable: true }
+});
+
+Body.mixIn = function (proto) {
+ for (const name of Object.getOwnPropertyNames(Body.prototype)) {
+ // istanbul ignore else: future proof
+ if (!(name in proto)) {
+ const desc = Object.getOwnPropertyDescriptor(Body.prototype, name);
+ Object.defineProperty(proto, name, desc);
+ }
+ }
+};
+
+/**
+ * Consume and convert an entire Body to a Buffer.
+ *
+ * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body
+ *
+ * @return Promise
+ */
+function consumeBody() {
+ var _this4 = this;
+
+ if (this[INTERNALS].disturbed) {
+ return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));
+ }
+
+ this[INTERNALS].disturbed = true;
+
+ if (this[INTERNALS].error) {
+ return Body.Promise.reject(this[INTERNALS].error);
+ }
+
+ let body = this.body;
+
+ // body is null
+ if (body === null) {
+ return Body.Promise.resolve(Buffer.alloc(0));
+ }
+
+ // body is blob
+ if (isBlob(body)) {
+ body = body.stream();
+ }
+
+ // body is buffer
+ if (Buffer.isBuffer(body)) {
+ return Body.Promise.resolve(body);
+ }
+
+ // istanbul ignore if: should never happen
+ if (!(body instanceof Stream)) {
+ return Body.Promise.resolve(Buffer.alloc(0));
+ }
+
+ // body is stream
+ // get ready to actually consume the body
+ let accum = [];
+ let accumBytes = 0;
+ let abort = false;
+
+ return new Body.Promise(function (resolve, reject) {
+ let resTimeout;
+
+ // allow timeout on slow response body
+ if (_this4.timeout) {
+ resTimeout = setTimeout(function () {
+ abort = true;
+ reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));
+ }, _this4.timeout);
+ }
+
+ // handle stream errors
+ body.on('error', function (err) {
+ if (err.name === 'AbortError') {
+ // if the request was aborted, reject with this Error
+ abort = true;
+ reject(err);
+ } else {
+ // other errors, such as incorrect content-encoding
+ reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));
+ }
+ });
+
+ body.on('data', function (chunk) {
+ if (abort || chunk === null) {
+ return;
+ }
+
+ if (_this4.size && accumBytes + chunk.length > _this4.size) {
+ abort = true;
+ reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));
+ return;
+ }
+
+ accumBytes += chunk.length;
+ accum.push(chunk);
+ });
+
+ body.on('end', function () {
+ if (abort) {
+ return;
+ }
+
+ clearTimeout(resTimeout);
+
+ try {
+ resolve(Buffer.concat(accum, accumBytes));
+ } catch (err) {
+ // handle streams that have accumulated too much data (issue #414)
+ reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));
+ }
+ });
+ });
+}
+
+/**
+ * Detect buffer encoding and convert to target encoding
+ * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding
+ *
+ * @param Buffer buffer Incoming buffer
+ * @param String encoding Target encoding
+ * @return String
+ */
+function convertBody(buffer, headers) {
+ if (typeof convert !== 'function') {
+ throw new Error('The package `encoding` must be installed to use the textConverted() function');
+ }
+
+ const ct = headers.get('content-type');
+ let charset = 'utf-8';
+ let res, str;
+
+ // header
+ if (ct) {
+ res = /charset=([^;]*)/i.exec(ct);
+ }
+
+ // no charset in content type, peek at response body for at most 1024 bytes
+ str = buffer.slice(0, 1024).toString();
+
+ // html5
+ if (!res && str) {
+ res = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;
+
+ this[MAP] = Object.create(null);
+
+ if (init instanceof Headers) {
+ const rawHeaders = init.raw();
+ const headerNames = Object.keys(rawHeaders);
+
+ for (const headerName of headerNames) {
+ for (const value of rawHeaders[headerName]) {
+ this.append(headerName, value);
+ }
+ }
+
+ return;
+ }
+
+ // We don't worry about converting prop to ByteString here as append()
+ // will handle it.
+ if (init == null) ; else if (typeof init === 'object') {
+ const method = init[Symbol.iterator];
+ if (method != null) {
+ if (typeof method !== 'function') {
+ throw new TypeError('Header pairs must be iterable');
+ }
+
+ // sequence>
+ // Note: per spec we have to first exhaust the lists then process them
+ const pairs = [];
+ for (const pair of init) {
+ if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {
+ throw new TypeError('Each header pair must be iterable');
+ }
+ pairs.push(Array.from(pair));
+ }
+
+ for (const pair of pairs) {
+ if (pair.length !== 2) {
+ throw new TypeError('Each header pair must be a name/value tuple');
+ }
+ this.append(pair[0], pair[1]);
+ }
+ } else {
+ // record
+ for (const key of Object.keys(init)) {
+ const value = init[key];
+ this.append(key, value);
+ }
+ }
+ } else {
+ throw new TypeError('Provided initializer must be an object');
+ }
+ }
+
+ /**
+ * Return combined header value given name
+ *
+ * @param String name Header name
+ * @return Mixed
+ */
+ get(name) {
+ name = `${name}`;
+ validateName(name);
+ const key = find(this[MAP], name);
+ if (key === undefined) {
+ return null;
+ }
+
+ return this[MAP][key].join(', ');
+ }
+
+ /**
+ * Iterate over all headers
+ *
+ * @param Function callback Executed for each item with parameters (value, name, thisArg)
+ * @param Boolean thisArg `this` context for callback function
+ * @return Void
+ */
+ forEach(callback) {
+ let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
+
+ let pairs = getHeaders(this);
+ let i = 0;
+ while (i < pairs.length) {
+ var _pairs$i = pairs[i];
+ const name = _pairs$i[0],
+ value = _pairs$i[1];
+
+ callback.call(thisArg, value, name, this);
+ pairs = getHeaders(this);
+ i++;
+ }
+ }
+
+ /**
+ * Overwrite header values given name
+ *
+ * @param String name Header name
+ * @param String value Header value
+ * @return Void
+ */
+ set(name, value) {
+ name = `${name}`;
+ value = `${value}`;
+ validateName(name);
+ validateValue(value);
+ const key = find(this[MAP], name);
+ this[MAP][key !== undefined ? key : name] = [value];
+ }
+
+ /**
+ * Append a value onto existing header
+ *
+ * @param String name Header name
+ * @param String value Header value
+ * @return Void
+ */
+ append(name, value) {
+ name = `${name}`;
+ value = `${value}`;
+ validateName(name);
+ validateValue(value);
+ const key = find(this[MAP], name);
+ if (key !== undefined) {
+ this[MAP][key].push(value);
+ } else {
+ this[MAP][name] = [value];
+ }
+ }
+
+ /**
+ * Check for header name existence
+ *
+ * @param String name Header name
+ * @return Boolean
+ */
+ has(name) {
+ name = `${name}`;
+ validateName(name);
+ return find(this[MAP], name) !== undefined;
+ }
+
+ /**
+ * Delete all header values given name
+ *
+ * @param String name Header name
+ * @return Void
+ */
+ delete(name) {
+ name = `${name}`;
+ validateName(name);
+ const key = find(this[MAP], name);
+ if (key !== undefined) {
+ delete this[MAP][key];
+ }
+ }
+
+ /**
+ * Return raw headers (non-spec api)
+ *
+ * @return Object
+ */
+ raw() {
+ return this[MAP];
+ }
+
+ /**
+ * Get an iterator on keys.
+ *
+ * @return Iterator
+ */
+ keys() {
+ return createHeadersIterator(this, 'key');
+ }
+
+ /**
+ * Get an iterator on values.
+ *
+ * @return Iterator
+ */
+ values() {
+ return createHeadersIterator(this, 'value');
+ }
+
+ /**
+ * Get an iterator on entries.
+ *
+ * This is the default iterator of the Headers object.
+ *
+ * @return Iterator
+ */
+ [Symbol.iterator]() {
+ return createHeadersIterator(this, 'key+value');
+ }
+}
+Headers.prototype.entries = Headers.prototype[Symbol.iterator];
+
+Object.defineProperty(Headers.prototype, Symbol.toStringTag, {
+ value: 'Headers',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+Object.defineProperties(Headers.prototype, {
+ get: { enumerable: true },
+ forEach: { enumerable: true },
+ set: { enumerable: true },
+ append: { enumerable: true },
+ has: { enumerable: true },
+ delete: { enumerable: true },
+ keys: { enumerable: true },
+ values: { enumerable: true },
+ entries: { enumerable: true }
+});
+
+function getHeaders(headers) {
+ let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';
+
+ const keys = Object.keys(headers[MAP]).sort();
+ return keys.map(kind === 'key' ? function (k) {
+ return k.toLowerCase();
+ } : kind === 'value' ? function (k) {
+ return headers[MAP][k].join(', ');
+ } : function (k) {
+ return [k.toLowerCase(), headers[MAP][k].join(', ')];
+ });
+}
+
+const INTERNAL = Symbol('internal');
+
+function createHeadersIterator(target, kind) {
+ const iterator = Object.create(HeadersIteratorPrototype);
+ iterator[INTERNAL] = {
+ target,
+ kind,
+ index: 0
+ };
+ return iterator;
+}
+
+const HeadersIteratorPrototype = Object.setPrototypeOf({
+ next() {
+ // istanbul ignore if
+ if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {
+ throw new TypeError('Value of `this` is not a HeadersIterator');
+ }
+
+ var _INTERNAL = this[INTERNAL];
+ const target = _INTERNAL.target,
+ kind = _INTERNAL.kind,
+ index = _INTERNAL.index;
+
+ const values = getHeaders(target, kind);
+ const len = values.length;
+ if (index >= len) {
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+
+ this[INTERNAL].index = index + 1;
+
+ return {
+ value: values[index],
+ done: false
+ };
+ }
+}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));
+
+Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {
+ value: 'HeadersIterator',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+/**
+ * Export the Headers object in a form that Node.js can consume.
+ *
+ * @param Headers headers
+ * @return Object
+ */
+function exportNodeCompatibleHeaders(headers) {
+ const obj = Object.assign({ __proto__: null }, headers[MAP]);
+
+ // http.request() only supports string as Host header. This hack makes
+ // specifying custom Host header possible.
+ const hostHeaderKey = find(headers[MAP], 'Host');
+ if (hostHeaderKey !== undefined) {
+ obj[hostHeaderKey] = obj[hostHeaderKey][0];
+ }
+
+ return obj;
+}
+
+/**
+ * Create a Headers object from an object of headers, ignoring those that do
+ * not conform to HTTP grammar productions.
+ *
+ * @param Object obj Object of headers
+ * @return Headers
+ */
+function createHeadersLenient(obj) {
+ const headers = new Headers();
+ for (const name of Object.keys(obj)) {
+ if (invalidTokenRegex.test(name)) {
+ continue;
+ }
+ if (Array.isArray(obj[name])) {
+ for (const val of obj[name]) {
+ if (invalidHeaderCharRegex.test(val)) {
+ continue;
+ }
+ if (headers[MAP][name] === undefined) {
+ headers[MAP][name] = [val];
+ } else {
+ headers[MAP][name].push(val);
+ }
+ }
+ } else if (!invalidHeaderCharRegex.test(obj[name])) {
+ headers[MAP][name] = [obj[name]];
+ }
+ }
+ return headers;
+}
+
+const INTERNALS$1 = Symbol('Response internals');
+
+// fix an issue where "STATUS_CODES" aren't a named export for node <10
+const STATUS_CODES = http.STATUS_CODES;
+
+/**
+ * Response class
+ *
+ * @param Stream body Readable stream
+ * @param Object opts Response options
+ * @return Void
+ */
+class Response {
+ constructor() {
+ let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+ let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+ Body.call(this, body, opts);
+
+ const status = opts.status || 200;
+ const headers = new Headers(opts.headers);
+
+ if (body != null && !headers.has('Content-Type')) {
+ const contentType = extractContentType(body);
+ if (contentType) {
+ headers.append('Content-Type', contentType);
+ }
+ }
+
+ this[INTERNALS$1] = {
+ url: opts.url,
+ status,
+ statusText: opts.statusText || STATUS_CODES[status],
+ headers,
+ counter: opts.counter
+ };
+ }
+
+ get url() {
+ return this[INTERNALS$1].url || '';
+ }
+
+ get status() {
+ return this[INTERNALS$1].status;
+ }
+
+ /**
+ * Convenience property representing if the request ended normally
+ */
+ get ok() {
+ return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;
+ }
+
+ get redirected() {
+ return this[INTERNALS$1].counter > 0;
+ }
+
+ get statusText() {
+ return this[INTERNALS$1].statusText;
+ }
+
+ get headers() {
+ return this[INTERNALS$1].headers;
+ }
+
+ /**
+ * Clone this response
+ *
+ * @return Response
+ */
+ clone() {
+ return new Response(clone(this), {
+ url: this.url,
+ status: this.status,
+ statusText: this.statusText,
+ headers: this.headers,
+ ok: this.ok,
+ redirected: this.redirected
+ });
+ }
+}
+
+Body.mixIn(Response.prototype);
+
+Object.defineProperties(Response.prototype, {
+ url: { enumerable: true },
+ status: { enumerable: true },
+ ok: { enumerable: true },
+ redirected: { enumerable: true },
+ statusText: { enumerable: true },
+ headers: { enumerable: true },
+ clone: { enumerable: true }
+});
+
+Object.defineProperty(Response.prototype, Symbol.toStringTag, {
+ value: 'Response',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+const INTERNALS$2 = Symbol('Request internals');
+
+// fix an issue where "format", "parse" aren't a named export for node <10
+const parse_url = Url.parse;
+const format_url = Url.format;
+
+const streamDestructionSupported = 'destroy' in Stream.Readable.prototype;
+
+/**
+ * Check if a value is an instance of Request.
+ *
+ * @param Mixed input
+ * @return Boolean
+ */
+function isRequest(input) {
+ return typeof input === 'object' && typeof input[INTERNALS$2] === 'object';
+}
+
+function isAbortSignal(signal) {
+ const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);
+ return !!(proto && proto.constructor.name === 'AbortSignal');
+}
+
+/**
+ * Request class
+ *
+ * @param Mixed input Url or Request instance
+ * @param Object init Custom options
+ * @return Void
+ */
+class Request {
+ constructor(input) {
+ let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+ let parsedURL;
+
+ // normalize input
+ if (!isRequest(input)) {
+ if (input && input.href) {
+ // in order to support Node.js' Url objects; though WHATWG's URL objects
+ // will fall into this branch also (since their `toString()` will return
+ // `href` property anyway)
+ parsedURL = parse_url(input.href);
+ } else {
+ // coerce input to a string before attempting to parse
+ parsedURL = parse_url(`${input}`);
+ }
+ input = {};
+ } else {
+ parsedURL = parse_url(input.url);
+ }
+
+ let method = init.method || input.method || 'GET';
+ method = method.toUpperCase();
+
+ if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {
+ throw new TypeError('Request with GET/HEAD method cannot have body');
+ }
+
+ let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;
+
+ Body.call(this, inputBody, {
+ timeout: init.timeout || input.timeout || 0,
+ size: init.size || input.size || 0
+ });
+
+ const headers = new Headers(init.headers || input.headers || {});
+
+ if (inputBody != null && !headers.has('Content-Type')) {
+ const contentType = extractContentType(inputBody);
+ if (contentType) {
+ headers.append('Content-Type', contentType);
+ }
+ }
+
+ let signal = isRequest(input) ? input.signal : null;
+ if ('signal' in init) signal = init.signal;
+
+ if (signal != null && !isAbortSignal(signal)) {
+ throw new TypeError('Expected signal to be an instanceof AbortSignal');
+ }
+
+ this[INTERNALS$2] = {
+ method,
+ redirect: init.redirect || input.redirect || 'follow',
+ headers,
+ parsedURL,
+ signal
+ };
+
+ // node-fetch-only options
+ this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;
+ this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;
+ this.counter = init.counter || input.counter || 0;
+ this.agent = init.agent || input.agent;
+ }
+
+ get method() {
+ return this[INTERNALS$2].method;
+ }
+
+ get url() {
+ return format_url(this[INTERNALS$2].parsedURL);
+ }
+
+ get headers() {
+ return this[INTERNALS$2].headers;
+ }
+
+ get redirect() {
+ return this[INTERNALS$2].redirect;
+ }
+
+ get signal() {
+ return this[INTERNALS$2].signal;
+ }
+
+ /**
+ * Clone this request
+ *
+ * @return Request
+ */
+ clone() {
+ return new Request(this);
+ }
+}
+
+Body.mixIn(Request.prototype);
+
+Object.defineProperty(Request.prototype, Symbol.toStringTag, {
+ value: 'Request',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+Object.defineProperties(Request.prototype, {
+ method: { enumerable: true },
+ url: { enumerable: true },
+ headers: { enumerable: true },
+ redirect: { enumerable: true },
+ clone: { enumerable: true },
+ signal: { enumerable: true }
+});
+
+/**
+ * Convert a Request to Node.js http request options.
+ *
+ * @param Request A Request instance
+ * @return Object The options object to be passed to http.request
+ */
+function getNodeRequestOptions(request) {
+ const parsedURL = request[INTERNALS$2].parsedURL;
+ const headers = new Headers(request[INTERNALS$2].headers);
+
+ // fetch step 1.3
+ if (!headers.has('Accept')) {
+ headers.set('Accept', '*/*');
+ }
+
+ // Basic fetch
+ if (!parsedURL.protocol || !parsedURL.hostname) {
+ throw new TypeError('Only absolute URLs are supported');
+ }
+
+ if (!/^https?:$/.test(parsedURL.protocol)) {
+ throw new TypeError('Only HTTP(S) protocols are supported');
+ }
+
+ if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {
+ throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');
+ }
+
+ // HTTP-network-or-cache fetch steps 2.4-2.7
+ let contentLengthValue = null;
+ if (request.body == null && /^(POST|PUT)$/i.test(request.method)) {
+ contentLengthValue = '0';
+ }
+ if (request.body != null) {
+ const totalBytes = getTotalBytes(request);
+ if (typeof totalBytes === 'number') {
+ contentLengthValue = String(totalBytes);
+ }
+ }
+ if (contentLengthValue) {
+ headers.set('Content-Length', contentLengthValue);
+ }
+
+ // HTTP-network-or-cache fetch step 2.11
+ if (!headers.has('User-Agent')) {
+ headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');
+ }
+
+ // HTTP-network-or-cache fetch step 2.15
+ if (request.compress && !headers.has('Accept-Encoding')) {
+ headers.set('Accept-Encoding', 'gzip,deflate');
+ }
+
+ let agent = request.agent;
+ if (typeof agent === 'function') {
+ agent = agent(parsedURL);
+ }
+
+ if (!headers.has('Connection') && !agent) {
+ headers.set('Connection', 'close');
+ }
+
+ // HTTP-network fetch step 4.2
+ // chunked encoding is handled by Node.js
+
+ return Object.assign({}, parsedURL, {
+ method: request.method,
+ headers: exportNodeCompatibleHeaders(headers),
+ agent
+ });
+}
+
+/**
+ * abort-error.js
+ *
+ * AbortError interface for cancelled requests
+ */
+
+/**
+ * Create AbortError instance
+ *
+ * @param String message Error message for human
+ * @return AbortError
+ */
+function AbortError(message) {
+ Error.call(this, message);
+
+ this.type = 'aborted';
+ this.message = message;
+
+ // hide custom error implementation details from end-users
+ Error.captureStackTrace(this, this.constructor);
+}
+
+AbortError.prototype = Object.create(Error.prototype);
+AbortError.prototype.constructor = AbortError;
+AbortError.prototype.name = 'AbortError';
+
+// fix an issue where "PassThrough", "resolve" aren't a named export for node <10
+const PassThrough$1 = Stream.PassThrough;
+const resolve_url = Url.resolve;
+
+/**
+ * Fetch function
+ *
+ * @param Mixed url Absolute url or Request instance
+ * @param Object opts Fetch options
+ * @return Promise
+ */
+function fetch(url, opts) {
+
+ // allow custom promise
+ if (!fetch.Promise) {
+ throw new Error('native promise missing, set fetch.Promise to your favorite alternative');
+ }
+
+ Body.Promise = fetch.Promise;
+
+ // wrap http.request into fetch
+ return new fetch.Promise(function (resolve, reject) {
+ // build request object
+ const request = new Request(url, opts);
+ const options = getNodeRequestOptions(request);
+
+ const send = (options.protocol === 'https:' ? https : http).request;
+ const signal = request.signal;
+
+ let response = null;
+
+ const abort = function abort() {
+ let error = new AbortError('The user aborted a request.');
+ reject(error);
+ if (request.body && request.body instanceof Stream.Readable) {
+ request.body.destroy(error);
+ }
+ if (!response || !response.body) return;
+ response.body.emit('error', error);
+ };
+
+ if (signal && signal.aborted) {
+ abort();
+ return;
+ }
+
+ const abortAndFinalize = function abortAndFinalize() {
+ abort();
+ finalize();
+ };
+
+ // send request
+ const req = send(options);
+ let reqTimeout;
+
+ if (signal) {
+ signal.addEventListener('abort', abortAndFinalize);
+ }
+
+ function finalize() {
+ req.abort();
+ if (signal) signal.removeEventListener('abort', abortAndFinalize);
+ clearTimeout(reqTimeout);
+ }
+
+ if (request.timeout) {
+ req.once('socket', function (socket) {
+ reqTimeout = setTimeout(function () {
+ reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));
+ finalize();
+ }, request.timeout);
+ });
+ }
+
+ req.on('error', function (err) {
+ reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
+ finalize();
+ });
+
+ req.on('response', function (res) {
+ clearTimeout(reqTimeout);
+
+ const headers = createHeadersLenient(res.headers);
+
+ // HTTP fetch step 5
+ if (fetch.isRedirect(res.statusCode)) {
+ // HTTP fetch step 5.2
+ const location = headers.get('Location');
+
+ // HTTP fetch step 5.3
+ const locationURL = location === null ? null : resolve_url(request.url, location);
+
+ // HTTP fetch step 5.5
+ switch (request.redirect) {
+ case 'error':
+ reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));
+ finalize();
+ return;
+ case 'manual':
+ // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.
+ if (locationURL !== null) {
+ // handle corrupted header
+ try {
+ headers.set('Location', locationURL);
+ } catch (err) {
+ // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request
+ reject(err);
+ }
+ }
+ break;
+ case 'follow':
+ // HTTP-redirect fetch step 2
+ if (locationURL === null) {
+ break;
+ }
+
+ // HTTP-redirect fetch step 5
+ if (request.counter >= request.follow) {
+ reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));
+ finalize();
+ return;
+ }
+
+ // HTTP-redirect fetch step 6 (counter increment)
+ // Create a new Request object.
+ const requestOpts = {
+ headers: new Headers(request.headers),
+ follow: request.follow,
+ counter: request.counter + 1,
+ agent: request.agent,
+ compress: request.compress,
+ method: request.method,
+ body: request.body,
+ signal: request.signal,
+ timeout: request.timeout,
+ size: request.size
+ };
+
+ // HTTP-redirect fetch step 9
+ if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {
+ reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));
+ finalize();
+ return;
+ }
+
+ // HTTP-redirect fetch step 11
+ if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {
+ requestOpts.method = 'GET';
+ requestOpts.body = undefined;
+ requestOpts.headers.delete('content-length');
+ }
+
+ // HTTP-redirect fetch step 15
+ resolve(fetch(new Request(locationURL, requestOpts)));
+ finalize();
+ return;
+ }
+ }
+
+ // prepare response
+ res.once('end', function () {
+ if (signal) signal.removeEventListener('abort', abortAndFinalize);
+ });
+ let body = res.pipe(new PassThrough$1());
+
+ const response_options = {
+ url: request.url,
+ status: res.statusCode,
+ statusText: res.statusMessage,
+ headers: headers,
+ size: request.size,
+ timeout: request.timeout,
+ counter: request.counter
+ };
+
+ // HTTP-network fetch step 12.1.1.3
+ const codings = headers.get('Content-Encoding');
+
+ // HTTP-network fetch step 12.1.1.4: handle content codings
+
+ // in following scenarios we ignore compression support
+ // 1. compression support is disabled
+ // 2. HEAD request
+ // 3. no Content-Encoding header
+ // 4. no content response (204)
+ // 5. content not modified response (304)
+ if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {
+ response = new Response(body, response_options);
+ resolve(response);
+ return;
+ }
+
+ // For Node v6+
+ // Be less strict when decoding compressed responses, since sometimes
+ // servers send slightly invalid responses that are still accepted
+ // by common browsers.
+ // Always using Z_SYNC_FLUSH is what cURL does.
+ const zlibOptions = {
+ flush: zlib.Z_SYNC_FLUSH,
+ finishFlush: zlib.Z_SYNC_FLUSH
+ };
+
+ // for gzip
+ if (codings == 'gzip' || codings == 'x-gzip') {
+ body = body.pipe(zlib.createGunzip(zlibOptions));
+ response = new Response(body, response_options);
+ resolve(response);
+ return;
+ }
+
+ // for deflate
+ if (codings == 'deflate' || codings == 'x-deflate') {
+ // handle the infamous raw deflate response from old servers
+ // a hack for old IIS and Apache servers
+ const raw = res.pipe(new PassThrough$1());
+ raw.once('data', function (chunk) {
+ // see http://stackoverflow.com/questions/37519828
+ if ((chunk[0] & 0x0F) === 0x08) {
+ body = body.pipe(zlib.createInflate());
+ } else {
+ body = body.pipe(zlib.createInflateRaw());
+ }
+ response = new Response(body, response_options);
+ resolve(response);
+ });
+ return;
+ }
+
+ // for br
+ if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {
+ body = body.pipe(zlib.createBrotliDecompress());
+ response = new Response(body, response_options);
+ resolve(response);
+ return;
+ }
+
+ // otherwise, use response as-is
+ response = new Response(body, response_options);
+ resolve(response);
+ });
+
+ writeToStream(req, request);
+ });
+}
+/**
+ * Redirect code matching
+ *
+ * @param Number code Status code
+ * @return Boolean
+ */
+fetch.isRedirect = function (code) {
+ return code === 301 || code === 302 || code === 303 || code === 307 || code === 308;
+};
+
+// expose Promise
+fetch.Promise = global.Promise;
+
+export default fetch;
+export { Headers, Request, Response, FetchError };
diff --git a/node_modules/node-fetch/lib/index.js b/node_modules/node-fetch/lib/index.js
new file mode 100644
index 0000000..4b241bf
--- /dev/null
+++ b/node_modules/node-fetch/lib/index.js
@@ -0,0 +1,1649 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var Stream = _interopDefault(require('stream'));
+var http = _interopDefault(require('http'));
+var Url = _interopDefault(require('url'));
+var https = _interopDefault(require('https'));
+var zlib = _interopDefault(require('zlib'));
+
+// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js
+
+// fix for "Readable" isn't a named export issue
+const Readable = Stream.Readable;
+
+const BUFFER = Symbol('buffer');
+const TYPE = Symbol('type');
+
+class Blob {
+ constructor() {
+ this[TYPE] = '';
+
+ const blobParts = arguments[0];
+ const options = arguments[1];
+
+ const buffers = [];
+ let size = 0;
+
+ if (blobParts) {
+ const a = blobParts;
+ const length = Number(a.length);
+ for (let i = 0; i < length; i++) {
+ const element = a[i];
+ let buffer;
+ if (element instanceof Buffer) {
+ buffer = element;
+ } else if (ArrayBuffer.isView(element)) {
+ buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);
+ } else if (element instanceof ArrayBuffer) {
+ buffer = Buffer.from(element);
+ } else if (element instanceof Blob) {
+ buffer = element[BUFFER];
+ } else {
+ buffer = Buffer.from(typeof element === 'string' ? element : String(element));
+ }
+ size += buffer.length;
+ buffers.push(buffer);
+ }
+ }
+
+ this[BUFFER] = Buffer.concat(buffers);
+
+ let type = options && options.type !== undefined && String(options.type).toLowerCase();
+ if (type && !/[^\u0020-\u007E]/.test(type)) {
+ this[TYPE] = type;
+ }
+ }
+ get size() {
+ return this[BUFFER].length;
+ }
+ get type() {
+ return this[TYPE];
+ }
+ text() {
+ return Promise.resolve(this[BUFFER].toString());
+ }
+ arrayBuffer() {
+ const buf = this[BUFFER];
+ const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+ return Promise.resolve(ab);
+ }
+ stream() {
+ const readable = new Readable();
+ readable._read = function () {};
+ readable.push(this[BUFFER]);
+ readable.push(null);
+ return readable;
+ }
+ toString() {
+ return '[object Blob]';
+ }
+ slice() {
+ const size = this.size;
+
+ const start = arguments[0];
+ const end = arguments[1];
+ let relativeStart, relativeEnd;
+ if (start === undefined) {
+ relativeStart = 0;
+ } else if (start < 0) {
+ relativeStart = Math.max(size + start, 0);
+ } else {
+ relativeStart = Math.min(start, size);
+ }
+ if (end === undefined) {
+ relativeEnd = size;
+ } else if (end < 0) {
+ relativeEnd = Math.max(size + end, 0);
+ } else {
+ relativeEnd = Math.min(end, size);
+ }
+ const span = Math.max(relativeEnd - relativeStart, 0);
+
+ const buffer = this[BUFFER];
+ const slicedBuffer = buffer.slice(relativeStart, relativeStart + span);
+ const blob = new Blob([], { type: arguments[2] });
+ blob[BUFFER] = slicedBuffer;
+ return blob;
+ }
+}
+
+Object.defineProperties(Blob.prototype, {
+ size: { enumerable: true },
+ type: { enumerable: true },
+ slice: { enumerable: true }
+});
+
+Object.defineProperty(Blob.prototype, Symbol.toStringTag, {
+ value: 'Blob',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+/**
+ * fetch-error.js
+ *
+ * FetchError interface for operational errors
+ */
+
+/**
+ * Create FetchError instance
+ *
+ * @param String message Error message for human
+ * @param String type Error type for machine
+ * @param String systemError For Node.js system error
+ * @return FetchError
+ */
+function FetchError(message, type, systemError) {
+ Error.call(this, message);
+
+ this.message = message;
+ this.type = type;
+
+ // when err.type is `system`, err.code contains system error code
+ if (systemError) {
+ this.code = this.errno = systemError.code;
+ }
+
+ // hide custom error implementation details from end-users
+ Error.captureStackTrace(this, this.constructor);
+}
+
+FetchError.prototype = Object.create(Error.prototype);
+FetchError.prototype.constructor = FetchError;
+FetchError.prototype.name = 'FetchError';
+
+let convert;
+try {
+ convert = require('encoding').convert;
+} catch (e) {}
+
+const INTERNALS = Symbol('Body internals');
+
+// fix an issue where "PassThrough" isn't a named export for node <10
+const PassThrough = Stream.PassThrough;
+
+/**
+ * Body mixin
+ *
+ * Ref: https://fetch.spec.whatwg.org/#body
+ *
+ * @param Stream body Readable stream
+ * @param Object opts Response options
+ * @return Void
+ */
+function Body(body) {
+ var _this = this;
+
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+ _ref$size = _ref.size;
+
+ let size = _ref$size === undefined ? 0 : _ref$size;
+ var _ref$timeout = _ref.timeout;
+ let timeout = _ref$timeout === undefined ? 0 : _ref$timeout;
+
+ if (body == null) {
+ // body is undefined or null
+ body = null;
+ } else if (isURLSearchParams(body)) {
+ // body is a URLSearchParams
+ body = Buffer.from(body.toString());
+ } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
+ // body is ArrayBuffer
+ body = Buffer.from(body);
+ } else if (ArrayBuffer.isView(body)) {
+ // body is ArrayBufferView
+ body = Buffer.from(body.buffer, body.byteOffset, body.byteLength);
+ } else if (body instanceof Stream) ; else {
+ // none of the above
+ // coerce to string then buffer
+ body = Buffer.from(String(body));
+ }
+ this[INTERNALS] = {
+ body,
+ disturbed: false,
+ error: null
+ };
+ this.size = size;
+ this.timeout = timeout;
+
+ if (body instanceof Stream) {
+ body.on('error', function (err) {
+ const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);
+ _this[INTERNALS].error = error;
+ });
+ }
+}
+
+Body.prototype = {
+ get body() {
+ return this[INTERNALS].body;
+ },
+
+ get bodyUsed() {
+ return this[INTERNALS].disturbed;
+ },
+
+ /**
+ * Decode response as ArrayBuffer
+ *
+ * @return Promise
+ */
+ arrayBuffer() {
+ return consumeBody.call(this).then(function (buf) {
+ return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+ });
+ },
+
+ /**
+ * Return raw response as Blob
+ *
+ * @return Promise
+ */
+ blob() {
+ let ct = this.headers && this.headers.get('content-type') || '';
+ return consumeBody.call(this).then(function (buf) {
+ return Object.assign(
+ // Prevent copying
+ new Blob([], {
+ type: ct.toLowerCase()
+ }), {
+ [BUFFER]: buf
+ });
+ });
+ },
+
+ /**
+ * Decode response as json
+ *
+ * @return Promise
+ */
+ json() {
+ var _this2 = this;
+
+ return consumeBody.call(this).then(function (buffer) {
+ try {
+ return JSON.parse(buffer.toString());
+ } catch (err) {
+ return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));
+ }
+ });
+ },
+
+ /**
+ * Decode response as text
+ *
+ * @return Promise
+ */
+ text() {
+ return consumeBody.call(this).then(function (buffer) {
+ return buffer.toString();
+ });
+ },
+
+ /**
+ * Decode response as buffer (non-spec api)
+ *
+ * @return Promise
+ */
+ buffer() {
+ return consumeBody.call(this);
+ },
+
+ /**
+ * Decode response as text, while automatically detecting the encoding and
+ * trying to decode to UTF-8 (non-spec api)
+ *
+ * @return Promise
+ */
+ textConverted() {
+ var _this3 = this;
+
+ return consumeBody.call(this).then(function (buffer) {
+ return convertBody(buffer, _this3.headers);
+ });
+ }
+};
+
+// In browsers, all properties are enumerable.
+Object.defineProperties(Body.prototype, {
+ body: { enumerable: true },
+ bodyUsed: { enumerable: true },
+ arrayBuffer: { enumerable: true },
+ blob: { enumerable: true },
+ json: { enumerable: true },
+ text: { enumerable: true }
+});
+
+Body.mixIn = function (proto) {
+ for (const name of Object.getOwnPropertyNames(Body.prototype)) {
+ // istanbul ignore else: future proof
+ if (!(name in proto)) {
+ const desc = Object.getOwnPropertyDescriptor(Body.prototype, name);
+ Object.defineProperty(proto, name, desc);
+ }
+ }
+};
+
+/**
+ * Consume and convert an entire Body to a Buffer.
+ *
+ * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body
+ *
+ * @return Promise
+ */
+function consumeBody() {
+ var _this4 = this;
+
+ if (this[INTERNALS].disturbed) {
+ return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));
+ }
+
+ this[INTERNALS].disturbed = true;
+
+ if (this[INTERNALS].error) {
+ return Body.Promise.reject(this[INTERNALS].error);
+ }
+
+ let body = this.body;
+
+ // body is null
+ if (body === null) {
+ return Body.Promise.resolve(Buffer.alloc(0));
+ }
+
+ // body is blob
+ if (isBlob(body)) {
+ body = body.stream();
+ }
+
+ // body is buffer
+ if (Buffer.isBuffer(body)) {
+ return Body.Promise.resolve(body);
+ }
+
+ // istanbul ignore if: should never happen
+ if (!(body instanceof Stream)) {
+ return Body.Promise.resolve(Buffer.alloc(0));
+ }
+
+ // body is stream
+ // get ready to actually consume the body
+ let accum = [];
+ let accumBytes = 0;
+ let abort = false;
+
+ return new Body.Promise(function (resolve, reject) {
+ let resTimeout;
+
+ // allow timeout on slow response body
+ if (_this4.timeout) {
+ resTimeout = setTimeout(function () {
+ abort = true;
+ reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));
+ }, _this4.timeout);
+ }
+
+ // handle stream errors
+ body.on('error', function (err) {
+ if (err.name === 'AbortError') {
+ // if the request was aborted, reject with this Error
+ abort = true;
+ reject(err);
+ } else {
+ // other errors, such as incorrect content-encoding
+ reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));
+ }
+ });
+
+ body.on('data', function (chunk) {
+ if (abort || chunk === null) {
+ return;
+ }
+
+ if (_this4.size && accumBytes + chunk.length > _this4.size) {
+ abort = true;
+ reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));
+ return;
+ }
+
+ accumBytes += chunk.length;
+ accum.push(chunk);
+ });
+
+ body.on('end', function () {
+ if (abort) {
+ return;
+ }
+
+ clearTimeout(resTimeout);
+
+ try {
+ resolve(Buffer.concat(accum, accumBytes));
+ } catch (err) {
+ // handle streams that have accumulated too much data (issue #414)
+ reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));
+ }
+ });
+ });
+}
+
+/**
+ * Detect buffer encoding and convert to target encoding
+ * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding
+ *
+ * @param Buffer buffer Incoming buffer
+ * @param String encoding Target encoding
+ * @return String
+ */
+function convertBody(buffer, headers) {
+ if (typeof convert !== 'function') {
+ throw new Error('The package `encoding` must be installed to use the textConverted() function');
+ }
+
+ const ct = headers.get('content-type');
+ let charset = 'utf-8';
+ let res, str;
+
+ // header
+ if (ct) {
+ res = /charset=([^;]*)/i.exec(ct);
+ }
+
+ // no charset in content type, peek at response body for at most 1024 bytes
+ str = buffer.slice(0, 1024).toString();
+
+ // html5
+ if (!res && str) {
+ res = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;
+
+ this[MAP] = Object.create(null);
+
+ if (init instanceof Headers) {
+ const rawHeaders = init.raw();
+ const headerNames = Object.keys(rawHeaders);
+
+ for (const headerName of headerNames) {
+ for (const value of rawHeaders[headerName]) {
+ this.append(headerName, value);
+ }
+ }
+
+ return;
+ }
+
+ // We don't worry about converting prop to ByteString here as append()
+ // will handle it.
+ if (init == null) ; else if (typeof init === 'object') {
+ const method = init[Symbol.iterator];
+ if (method != null) {
+ if (typeof method !== 'function') {
+ throw new TypeError('Header pairs must be iterable');
+ }
+
+ // sequence>
+ // Note: per spec we have to first exhaust the lists then process them
+ const pairs = [];
+ for (const pair of init) {
+ if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {
+ throw new TypeError('Each header pair must be iterable');
+ }
+ pairs.push(Array.from(pair));
+ }
+
+ for (const pair of pairs) {
+ if (pair.length !== 2) {
+ throw new TypeError('Each header pair must be a name/value tuple');
+ }
+ this.append(pair[0], pair[1]);
+ }
+ } else {
+ // record
+ for (const key of Object.keys(init)) {
+ const value = init[key];
+ this.append(key, value);
+ }
+ }
+ } else {
+ throw new TypeError('Provided initializer must be an object');
+ }
+ }
+
+ /**
+ * Return combined header value given name
+ *
+ * @param String name Header name
+ * @return Mixed
+ */
+ get(name) {
+ name = `${name}`;
+ validateName(name);
+ const key = find(this[MAP], name);
+ if (key === undefined) {
+ return null;
+ }
+
+ return this[MAP][key].join(', ');
+ }
+
+ /**
+ * Iterate over all headers
+ *
+ * @param Function callback Executed for each item with parameters (value, name, thisArg)
+ * @param Boolean thisArg `this` context for callback function
+ * @return Void
+ */
+ forEach(callback) {
+ let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
+
+ let pairs = getHeaders(this);
+ let i = 0;
+ while (i < pairs.length) {
+ var _pairs$i = pairs[i];
+ const name = _pairs$i[0],
+ value = _pairs$i[1];
+
+ callback.call(thisArg, value, name, this);
+ pairs = getHeaders(this);
+ i++;
+ }
+ }
+
+ /**
+ * Overwrite header values given name
+ *
+ * @param String name Header name
+ * @param String value Header value
+ * @return Void
+ */
+ set(name, value) {
+ name = `${name}`;
+ value = `${value}`;
+ validateName(name);
+ validateValue(value);
+ const key = find(this[MAP], name);
+ this[MAP][key !== undefined ? key : name] = [value];
+ }
+
+ /**
+ * Append a value onto existing header
+ *
+ * @param String name Header name
+ * @param String value Header value
+ * @return Void
+ */
+ append(name, value) {
+ name = `${name}`;
+ value = `${value}`;
+ validateName(name);
+ validateValue(value);
+ const key = find(this[MAP], name);
+ if (key !== undefined) {
+ this[MAP][key].push(value);
+ } else {
+ this[MAP][name] = [value];
+ }
+ }
+
+ /**
+ * Check for header name existence
+ *
+ * @param String name Header name
+ * @return Boolean
+ */
+ has(name) {
+ name = `${name}`;
+ validateName(name);
+ return find(this[MAP], name) !== undefined;
+ }
+
+ /**
+ * Delete all header values given name
+ *
+ * @param String name Header name
+ * @return Void
+ */
+ delete(name) {
+ name = `${name}`;
+ validateName(name);
+ const key = find(this[MAP], name);
+ if (key !== undefined) {
+ delete this[MAP][key];
+ }
+ }
+
+ /**
+ * Return raw headers (non-spec api)
+ *
+ * @return Object
+ */
+ raw() {
+ return this[MAP];
+ }
+
+ /**
+ * Get an iterator on keys.
+ *
+ * @return Iterator
+ */
+ keys() {
+ return createHeadersIterator(this, 'key');
+ }
+
+ /**
+ * Get an iterator on values.
+ *
+ * @return Iterator
+ */
+ values() {
+ return createHeadersIterator(this, 'value');
+ }
+
+ /**
+ * Get an iterator on entries.
+ *
+ * This is the default iterator of the Headers object.
+ *
+ * @return Iterator
+ */
+ [Symbol.iterator]() {
+ return createHeadersIterator(this, 'key+value');
+ }
+}
+Headers.prototype.entries = Headers.prototype[Symbol.iterator];
+
+Object.defineProperty(Headers.prototype, Symbol.toStringTag, {
+ value: 'Headers',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+Object.defineProperties(Headers.prototype, {
+ get: { enumerable: true },
+ forEach: { enumerable: true },
+ set: { enumerable: true },
+ append: { enumerable: true },
+ has: { enumerable: true },
+ delete: { enumerable: true },
+ keys: { enumerable: true },
+ values: { enumerable: true },
+ entries: { enumerable: true }
+});
+
+function getHeaders(headers) {
+ let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';
+
+ const keys = Object.keys(headers[MAP]).sort();
+ return keys.map(kind === 'key' ? function (k) {
+ return k.toLowerCase();
+ } : kind === 'value' ? function (k) {
+ return headers[MAP][k].join(', ');
+ } : function (k) {
+ return [k.toLowerCase(), headers[MAP][k].join(', ')];
+ });
+}
+
+const INTERNAL = Symbol('internal');
+
+function createHeadersIterator(target, kind) {
+ const iterator = Object.create(HeadersIteratorPrototype);
+ iterator[INTERNAL] = {
+ target,
+ kind,
+ index: 0
+ };
+ return iterator;
+}
+
+const HeadersIteratorPrototype = Object.setPrototypeOf({
+ next() {
+ // istanbul ignore if
+ if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {
+ throw new TypeError('Value of `this` is not a HeadersIterator');
+ }
+
+ var _INTERNAL = this[INTERNAL];
+ const target = _INTERNAL.target,
+ kind = _INTERNAL.kind,
+ index = _INTERNAL.index;
+
+ const values = getHeaders(target, kind);
+ const len = values.length;
+ if (index >= len) {
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+
+ this[INTERNAL].index = index + 1;
+
+ return {
+ value: values[index],
+ done: false
+ };
+ }
+}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));
+
+Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {
+ value: 'HeadersIterator',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+/**
+ * Export the Headers object in a form that Node.js can consume.
+ *
+ * @param Headers headers
+ * @return Object
+ */
+function exportNodeCompatibleHeaders(headers) {
+ const obj = Object.assign({ __proto__: null }, headers[MAP]);
+
+ // http.request() only supports string as Host header. This hack makes
+ // specifying custom Host header possible.
+ const hostHeaderKey = find(headers[MAP], 'Host');
+ if (hostHeaderKey !== undefined) {
+ obj[hostHeaderKey] = obj[hostHeaderKey][0];
+ }
+
+ return obj;
+}
+
+/**
+ * Create a Headers object from an object of headers, ignoring those that do
+ * not conform to HTTP grammar productions.
+ *
+ * @param Object obj Object of headers
+ * @return Headers
+ */
+function createHeadersLenient(obj) {
+ const headers = new Headers();
+ for (const name of Object.keys(obj)) {
+ if (invalidTokenRegex.test(name)) {
+ continue;
+ }
+ if (Array.isArray(obj[name])) {
+ for (const val of obj[name]) {
+ if (invalidHeaderCharRegex.test(val)) {
+ continue;
+ }
+ if (headers[MAP][name] === undefined) {
+ headers[MAP][name] = [val];
+ } else {
+ headers[MAP][name].push(val);
+ }
+ }
+ } else if (!invalidHeaderCharRegex.test(obj[name])) {
+ headers[MAP][name] = [obj[name]];
+ }
+ }
+ return headers;
+}
+
+const INTERNALS$1 = Symbol('Response internals');
+
+// fix an issue where "STATUS_CODES" aren't a named export for node <10
+const STATUS_CODES = http.STATUS_CODES;
+
+/**
+ * Response class
+ *
+ * @param Stream body Readable stream
+ * @param Object opts Response options
+ * @return Void
+ */
+class Response {
+ constructor() {
+ let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+ let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+ Body.call(this, body, opts);
+
+ const status = opts.status || 200;
+ const headers = new Headers(opts.headers);
+
+ if (body != null && !headers.has('Content-Type')) {
+ const contentType = extractContentType(body);
+ if (contentType) {
+ headers.append('Content-Type', contentType);
+ }
+ }
+
+ this[INTERNALS$1] = {
+ url: opts.url,
+ status,
+ statusText: opts.statusText || STATUS_CODES[status],
+ headers,
+ counter: opts.counter
+ };
+ }
+
+ get url() {
+ return this[INTERNALS$1].url || '';
+ }
+
+ get status() {
+ return this[INTERNALS$1].status;
+ }
+
+ /**
+ * Convenience property representing if the request ended normally
+ */
+ get ok() {
+ return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;
+ }
+
+ get redirected() {
+ return this[INTERNALS$1].counter > 0;
+ }
+
+ get statusText() {
+ return this[INTERNALS$1].statusText;
+ }
+
+ get headers() {
+ return this[INTERNALS$1].headers;
+ }
+
+ /**
+ * Clone this response
+ *
+ * @return Response
+ */
+ clone() {
+ return new Response(clone(this), {
+ url: this.url,
+ status: this.status,
+ statusText: this.statusText,
+ headers: this.headers,
+ ok: this.ok,
+ redirected: this.redirected
+ });
+ }
+}
+
+Body.mixIn(Response.prototype);
+
+Object.defineProperties(Response.prototype, {
+ url: { enumerable: true },
+ status: { enumerable: true },
+ ok: { enumerable: true },
+ redirected: { enumerable: true },
+ statusText: { enumerable: true },
+ headers: { enumerable: true },
+ clone: { enumerable: true }
+});
+
+Object.defineProperty(Response.prototype, Symbol.toStringTag, {
+ value: 'Response',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+const INTERNALS$2 = Symbol('Request internals');
+
+// fix an issue where "format", "parse" aren't a named export for node <10
+const parse_url = Url.parse;
+const format_url = Url.format;
+
+const streamDestructionSupported = 'destroy' in Stream.Readable.prototype;
+
+/**
+ * Check if a value is an instance of Request.
+ *
+ * @param Mixed input
+ * @return Boolean
+ */
+function isRequest(input) {
+ return typeof input === 'object' && typeof input[INTERNALS$2] === 'object';
+}
+
+function isAbortSignal(signal) {
+ const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);
+ return !!(proto && proto.constructor.name === 'AbortSignal');
+}
+
+/**
+ * Request class
+ *
+ * @param Mixed input Url or Request instance
+ * @param Object init Custom options
+ * @return Void
+ */
+class Request {
+ constructor(input) {
+ let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+ let parsedURL;
+
+ // normalize input
+ if (!isRequest(input)) {
+ if (input && input.href) {
+ // in order to support Node.js' Url objects; though WHATWG's URL objects
+ // will fall into this branch also (since their `toString()` will return
+ // `href` property anyway)
+ parsedURL = parse_url(input.href);
+ } else {
+ // coerce input to a string before attempting to parse
+ parsedURL = parse_url(`${input}`);
+ }
+ input = {};
+ } else {
+ parsedURL = parse_url(input.url);
+ }
+
+ let method = init.method || input.method || 'GET';
+ method = method.toUpperCase();
+
+ if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {
+ throw new TypeError('Request with GET/HEAD method cannot have body');
+ }
+
+ let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;
+
+ Body.call(this, inputBody, {
+ timeout: init.timeout || input.timeout || 0,
+ size: init.size || input.size || 0
+ });
+
+ const headers = new Headers(init.headers || input.headers || {});
+
+ if (inputBody != null && !headers.has('Content-Type')) {
+ const contentType = extractContentType(inputBody);
+ if (contentType) {
+ headers.append('Content-Type', contentType);
+ }
+ }
+
+ let signal = isRequest(input) ? input.signal : null;
+ if ('signal' in init) signal = init.signal;
+
+ if (signal != null && !isAbortSignal(signal)) {
+ throw new TypeError('Expected signal to be an instanceof AbortSignal');
+ }
+
+ this[INTERNALS$2] = {
+ method,
+ redirect: init.redirect || input.redirect || 'follow',
+ headers,
+ parsedURL,
+ signal
+ };
+
+ // node-fetch-only options
+ this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;
+ this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;
+ this.counter = init.counter || input.counter || 0;
+ this.agent = init.agent || input.agent;
+ }
+
+ get method() {
+ return this[INTERNALS$2].method;
+ }
+
+ get url() {
+ return format_url(this[INTERNALS$2].parsedURL);
+ }
+
+ get headers() {
+ return this[INTERNALS$2].headers;
+ }
+
+ get redirect() {
+ return this[INTERNALS$2].redirect;
+ }
+
+ get signal() {
+ return this[INTERNALS$2].signal;
+ }
+
+ /**
+ * Clone this request
+ *
+ * @return Request
+ */
+ clone() {
+ return new Request(this);
+ }
+}
+
+Body.mixIn(Request.prototype);
+
+Object.defineProperty(Request.prototype, Symbol.toStringTag, {
+ value: 'Request',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+Object.defineProperties(Request.prototype, {
+ method: { enumerable: true },
+ url: { enumerable: true },
+ headers: { enumerable: true },
+ redirect: { enumerable: true },
+ clone: { enumerable: true },
+ signal: { enumerable: true }
+});
+
+/**
+ * Convert a Request to Node.js http request options.
+ *
+ * @param Request A Request instance
+ * @return Object The options object to be passed to http.request
+ */
+function getNodeRequestOptions(request) {
+ const parsedURL = request[INTERNALS$2].parsedURL;
+ const headers = new Headers(request[INTERNALS$2].headers);
+
+ // fetch step 1.3
+ if (!headers.has('Accept')) {
+ headers.set('Accept', '*/*');
+ }
+
+ // Basic fetch
+ if (!parsedURL.protocol || !parsedURL.hostname) {
+ throw new TypeError('Only absolute URLs are supported');
+ }
+
+ if (!/^https?:$/.test(parsedURL.protocol)) {
+ throw new TypeError('Only HTTP(S) protocols are supported');
+ }
+
+ if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {
+ throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');
+ }
+
+ // HTTP-network-or-cache fetch steps 2.4-2.7
+ let contentLengthValue = null;
+ if (request.body == null && /^(POST|PUT)$/i.test(request.method)) {
+ contentLengthValue = '0';
+ }
+ if (request.body != null) {
+ const totalBytes = getTotalBytes(request);
+ if (typeof totalBytes === 'number') {
+ contentLengthValue = String(totalBytes);
+ }
+ }
+ if (contentLengthValue) {
+ headers.set('Content-Length', contentLengthValue);
+ }
+
+ // HTTP-network-or-cache fetch step 2.11
+ if (!headers.has('User-Agent')) {
+ headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');
+ }
+
+ // HTTP-network-or-cache fetch step 2.15
+ if (request.compress && !headers.has('Accept-Encoding')) {
+ headers.set('Accept-Encoding', 'gzip,deflate');
+ }
+
+ let agent = request.agent;
+ if (typeof agent === 'function') {
+ agent = agent(parsedURL);
+ }
+
+ if (!headers.has('Connection') && !agent) {
+ headers.set('Connection', 'close');
+ }
+
+ // HTTP-network fetch step 4.2
+ // chunked encoding is handled by Node.js
+
+ return Object.assign({}, parsedURL, {
+ method: request.method,
+ headers: exportNodeCompatibleHeaders(headers),
+ agent
+ });
+}
+
+/**
+ * abort-error.js
+ *
+ * AbortError interface for cancelled requests
+ */
+
+/**
+ * Create AbortError instance
+ *
+ * @param String message Error message for human
+ * @return AbortError
+ */
+function AbortError(message) {
+ Error.call(this, message);
+
+ this.type = 'aborted';
+ this.message = message;
+
+ // hide custom error implementation details from end-users
+ Error.captureStackTrace(this, this.constructor);
+}
+
+AbortError.prototype = Object.create(Error.prototype);
+AbortError.prototype.constructor = AbortError;
+AbortError.prototype.name = 'AbortError';
+
+// fix an issue where "PassThrough", "resolve" aren't a named export for node <10
+const PassThrough$1 = Stream.PassThrough;
+const resolve_url = Url.resolve;
+
+/**
+ * Fetch function
+ *
+ * @param Mixed url Absolute url or Request instance
+ * @param Object opts Fetch options
+ * @return Promise
+ */
+function fetch(url, opts) {
+
+ // allow custom promise
+ if (!fetch.Promise) {
+ throw new Error('native promise missing, set fetch.Promise to your favorite alternative');
+ }
+
+ Body.Promise = fetch.Promise;
+
+ // wrap http.request into fetch
+ return new fetch.Promise(function (resolve, reject) {
+ // build request object
+ const request = new Request(url, opts);
+ const options = getNodeRequestOptions(request);
+
+ const send = (options.protocol === 'https:' ? https : http).request;
+ const signal = request.signal;
+
+ let response = null;
+
+ const abort = function abort() {
+ let error = new AbortError('The user aborted a request.');
+ reject(error);
+ if (request.body && request.body instanceof Stream.Readable) {
+ request.body.destroy(error);
+ }
+ if (!response || !response.body) return;
+ response.body.emit('error', error);
+ };
+
+ if (signal && signal.aborted) {
+ abort();
+ return;
+ }
+
+ const abortAndFinalize = function abortAndFinalize() {
+ abort();
+ finalize();
+ };
+
+ // send request
+ const req = send(options);
+ let reqTimeout;
+
+ if (signal) {
+ signal.addEventListener('abort', abortAndFinalize);
+ }
+
+ function finalize() {
+ req.abort();
+ if (signal) signal.removeEventListener('abort', abortAndFinalize);
+ clearTimeout(reqTimeout);
+ }
+
+ if (request.timeout) {
+ req.once('socket', function (socket) {
+ reqTimeout = setTimeout(function () {
+ reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));
+ finalize();
+ }, request.timeout);
+ });
+ }
+
+ req.on('error', function (err) {
+ reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
+ finalize();
+ });
+
+ req.on('response', function (res) {
+ clearTimeout(reqTimeout);
+
+ const headers = createHeadersLenient(res.headers);
+
+ // HTTP fetch step 5
+ if (fetch.isRedirect(res.statusCode)) {
+ // HTTP fetch step 5.2
+ const location = headers.get('Location');
+
+ // HTTP fetch step 5.3
+ const locationURL = location === null ? null : resolve_url(request.url, location);
+
+ // HTTP fetch step 5.5
+ switch (request.redirect) {
+ case 'error':
+ reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));
+ finalize();
+ return;
+ case 'manual':
+ // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.
+ if (locationURL !== null) {
+ // handle corrupted header
+ try {
+ headers.set('Location', locationURL);
+ } catch (err) {
+ // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request
+ reject(err);
+ }
+ }
+ break;
+ case 'follow':
+ // HTTP-redirect fetch step 2
+ if (locationURL === null) {
+ break;
+ }
+
+ // HTTP-redirect fetch step 5
+ if (request.counter >= request.follow) {
+ reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));
+ finalize();
+ return;
+ }
+
+ // HTTP-redirect fetch step 6 (counter increment)
+ // Create a new Request object.
+ const requestOpts = {
+ headers: new Headers(request.headers),
+ follow: request.follow,
+ counter: request.counter + 1,
+ agent: request.agent,
+ compress: request.compress,
+ method: request.method,
+ body: request.body,
+ signal: request.signal,
+ timeout: request.timeout,
+ size: request.size
+ };
+
+ // HTTP-redirect fetch step 9
+ if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {
+ reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));
+ finalize();
+ return;
+ }
+
+ // HTTP-redirect fetch step 11
+ if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {
+ requestOpts.method = 'GET';
+ requestOpts.body = undefined;
+ requestOpts.headers.delete('content-length');
+ }
+
+ // HTTP-redirect fetch step 15
+ resolve(fetch(new Request(locationURL, requestOpts)));
+ finalize();
+ return;
+ }
+ }
+
+ // prepare response
+ res.once('end', function () {
+ if (signal) signal.removeEventListener('abort', abortAndFinalize);
+ });
+ let body = res.pipe(new PassThrough$1());
+
+ const response_options = {
+ url: request.url,
+ status: res.statusCode,
+ statusText: res.statusMessage,
+ headers: headers,
+ size: request.size,
+ timeout: request.timeout,
+ counter: request.counter
+ };
+
+ // HTTP-network fetch step 12.1.1.3
+ const codings = headers.get('Content-Encoding');
+
+ // HTTP-network fetch step 12.1.1.4: handle content codings
+
+ // in following scenarios we ignore compression support
+ // 1. compression support is disabled
+ // 2. HEAD request
+ // 3. no Content-Encoding header
+ // 4. no content response (204)
+ // 5. content not modified response (304)
+ if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {
+ response = new Response(body, response_options);
+ resolve(response);
+ return;
+ }
+
+ // For Node v6+
+ // Be less strict when decoding compressed responses, since sometimes
+ // servers send slightly invalid responses that are still accepted
+ // by common browsers.
+ // Always using Z_SYNC_FLUSH is what cURL does.
+ const zlibOptions = {
+ flush: zlib.Z_SYNC_FLUSH,
+ finishFlush: zlib.Z_SYNC_FLUSH
+ };
+
+ // for gzip
+ if (codings == 'gzip' || codings == 'x-gzip') {
+ body = body.pipe(zlib.createGunzip(zlibOptions));
+ response = new Response(body, response_options);
+ resolve(response);
+ return;
+ }
+
+ // for deflate
+ if (codings == 'deflate' || codings == 'x-deflate') {
+ // handle the infamous raw deflate response from old servers
+ // a hack for old IIS and Apache servers
+ const raw = res.pipe(new PassThrough$1());
+ raw.once('data', function (chunk) {
+ // see http://stackoverflow.com/questions/37519828
+ if ((chunk[0] & 0x0F) === 0x08) {
+ body = body.pipe(zlib.createInflate());
+ } else {
+ body = body.pipe(zlib.createInflateRaw());
+ }
+ response = new Response(body, response_options);
+ resolve(response);
+ });
+ return;
+ }
+
+ // for br
+ if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {
+ body = body.pipe(zlib.createBrotliDecompress());
+ response = new Response(body, response_options);
+ resolve(response);
+ return;
+ }
+
+ // otherwise, use response as-is
+ response = new Response(body, response_options);
+ resolve(response);
+ });
+
+ writeToStream(req, request);
+ });
+}
+/**
+ * Redirect code matching
+ *
+ * @param Number code Status code
+ * @return Boolean
+ */
+fetch.isRedirect = function (code) {
+ return code === 301 || code === 302 || code === 303 || code === 307 || code === 308;
+};
+
+// expose Promise
+fetch.Promise = global.Promise;
+
+module.exports = exports = fetch;
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.default = exports;
+exports.Headers = Headers;
+exports.Request = Request;
+exports.Response = Response;
+exports.FetchError = FetchError;
diff --git a/node_modules/node-fetch/lib/index.mjs b/node_modules/node-fetch/lib/index.mjs
new file mode 100644
index 0000000..ecf59af
--- /dev/null
+++ b/node_modules/node-fetch/lib/index.mjs
@@ -0,0 +1,1638 @@
+import Stream from 'stream';
+import http from 'http';
+import Url from 'url';
+import https from 'https';
+import zlib from 'zlib';
+
+// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js
+
+// fix for "Readable" isn't a named export issue
+const Readable = Stream.Readable;
+
+const BUFFER = Symbol('buffer');
+const TYPE = Symbol('type');
+
+class Blob {
+ constructor() {
+ this[TYPE] = '';
+
+ const blobParts = arguments[0];
+ const options = arguments[1];
+
+ const buffers = [];
+ let size = 0;
+
+ if (blobParts) {
+ const a = blobParts;
+ const length = Number(a.length);
+ for (let i = 0; i < length; i++) {
+ const element = a[i];
+ let buffer;
+ if (element instanceof Buffer) {
+ buffer = element;
+ } else if (ArrayBuffer.isView(element)) {
+ buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);
+ } else if (element instanceof ArrayBuffer) {
+ buffer = Buffer.from(element);
+ } else if (element instanceof Blob) {
+ buffer = element[BUFFER];
+ } else {
+ buffer = Buffer.from(typeof element === 'string' ? element : String(element));
+ }
+ size += buffer.length;
+ buffers.push(buffer);
+ }
+ }
+
+ this[BUFFER] = Buffer.concat(buffers);
+
+ let type = options && options.type !== undefined && String(options.type).toLowerCase();
+ if (type && !/[^\u0020-\u007E]/.test(type)) {
+ this[TYPE] = type;
+ }
+ }
+ get size() {
+ return this[BUFFER].length;
+ }
+ get type() {
+ return this[TYPE];
+ }
+ text() {
+ return Promise.resolve(this[BUFFER].toString());
+ }
+ arrayBuffer() {
+ const buf = this[BUFFER];
+ const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+ return Promise.resolve(ab);
+ }
+ stream() {
+ const readable = new Readable();
+ readable._read = function () {};
+ readable.push(this[BUFFER]);
+ readable.push(null);
+ return readable;
+ }
+ toString() {
+ return '[object Blob]';
+ }
+ slice() {
+ const size = this.size;
+
+ const start = arguments[0];
+ const end = arguments[1];
+ let relativeStart, relativeEnd;
+ if (start === undefined) {
+ relativeStart = 0;
+ } else if (start < 0) {
+ relativeStart = Math.max(size + start, 0);
+ } else {
+ relativeStart = Math.min(start, size);
+ }
+ if (end === undefined) {
+ relativeEnd = size;
+ } else if (end < 0) {
+ relativeEnd = Math.max(size + end, 0);
+ } else {
+ relativeEnd = Math.min(end, size);
+ }
+ const span = Math.max(relativeEnd - relativeStart, 0);
+
+ const buffer = this[BUFFER];
+ const slicedBuffer = buffer.slice(relativeStart, relativeStart + span);
+ const blob = new Blob([], { type: arguments[2] });
+ blob[BUFFER] = slicedBuffer;
+ return blob;
+ }
+}
+
+Object.defineProperties(Blob.prototype, {
+ size: { enumerable: true },
+ type: { enumerable: true },
+ slice: { enumerable: true }
+});
+
+Object.defineProperty(Blob.prototype, Symbol.toStringTag, {
+ value: 'Blob',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+/**
+ * fetch-error.js
+ *
+ * FetchError interface for operational errors
+ */
+
+/**
+ * Create FetchError instance
+ *
+ * @param String message Error message for human
+ * @param String type Error type for machine
+ * @param String systemError For Node.js system error
+ * @return FetchError
+ */
+function FetchError(message, type, systemError) {
+ Error.call(this, message);
+
+ this.message = message;
+ this.type = type;
+
+ // when err.type is `system`, err.code contains system error code
+ if (systemError) {
+ this.code = this.errno = systemError.code;
+ }
+
+ // hide custom error implementation details from end-users
+ Error.captureStackTrace(this, this.constructor);
+}
+
+FetchError.prototype = Object.create(Error.prototype);
+FetchError.prototype.constructor = FetchError;
+FetchError.prototype.name = 'FetchError';
+
+let convert;
+try {
+ convert = require('encoding').convert;
+} catch (e) {}
+
+const INTERNALS = Symbol('Body internals');
+
+// fix an issue where "PassThrough" isn't a named export for node <10
+const PassThrough = Stream.PassThrough;
+
+/**
+ * Body mixin
+ *
+ * Ref: https://fetch.spec.whatwg.org/#body
+ *
+ * @param Stream body Readable stream
+ * @param Object opts Response options
+ * @return Void
+ */
+function Body(body) {
+ var _this = this;
+
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+ _ref$size = _ref.size;
+
+ let size = _ref$size === undefined ? 0 : _ref$size;
+ var _ref$timeout = _ref.timeout;
+ let timeout = _ref$timeout === undefined ? 0 : _ref$timeout;
+
+ if (body == null) {
+ // body is undefined or null
+ body = null;
+ } else if (isURLSearchParams(body)) {
+ // body is a URLSearchParams
+ body = Buffer.from(body.toString());
+ } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
+ // body is ArrayBuffer
+ body = Buffer.from(body);
+ } else if (ArrayBuffer.isView(body)) {
+ // body is ArrayBufferView
+ body = Buffer.from(body.buffer, body.byteOffset, body.byteLength);
+ } else if (body instanceof Stream) ; else {
+ // none of the above
+ // coerce to string then buffer
+ body = Buffer.from(String(body));
+ }
+ this[INTERNALS] = {
+ body,
+ disturbed: false,
+ error: null
+ };
+ this.size = size;
+ this.timeout = timeout;
+
+ if (body instanceof Stream) {
+ body.on('error', function (err) {
+ const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);
+ _this[INTERNALS].error = error;
+ });
+ }
+}
+
+Body.prototype = {
+ get body() {
+ return this[INTERNALS].body;
+ },
+
+ get bodyUsed() {
+ return this[INTERNALS].disturbed;
+ },
+
+ /**
+ * Decode response as ArrayBuffer
+ *
+ * @return Promise
+ */
+ arrayBuffer() {
+ return consumeBody.call(this).then(function (buf) {
+ return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+ });
+ },
+
+ /**
+ * Return raw response as Blob
+ *
+ * @return Promise
+ */
+ blob() {
+ let ct = this.headers && this.headers.get('content-type') || '';
+ return consumeBody.call(this).then(function (buf) {
+ return Object.assign(
+ // Prevent copying
+ new Blob([], {
+ type: ct.toLowerCase()
+ }), {
+ [BUFFER]: buf
+ });
+ });
+ },
+
+ /**
+ * Decode response as json
+ *
+ * @return Promise
+ */
+ json() {
+ var _this2 = this;
+
+ return consumeBody.call(this).then(function (buffer) {
+ try {
+ return JSON.parse(buffer.toString());
+ } catch (err) {
+ return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));
+ }
+ });
+ },
+
+ /**
+ * Decode response as text
+ *
+ * @return Promise
+ */
+ text() {
+ return consumeBody.call(this).then(function (buffer) {
+ return buffer.toString();
+ });
+ },
+
+ /**
+ * Decode response as buffer (non-spec api)
+ *
+ * @return Promise
+ */
+ buffer() {
+ return consumeBody.call(this);
+ },
+
+ /**
+ * Decode response as text, while automatically detecting the encoding and
+ * trying to decode to UTF-8 (non-spec api)
+ *
+ * @return Promise
+ */
+ textConverted() {
+ var _this3 = this;
+
+ return consumeBody.call(this).then(function (buffer) {
+ return convertBody(buffer, _this3.headers);
+ });
+ }
+};
+
+// In browsers, all properties are enumerable.
+Object.defineProperties(Body.prototype, {
+ body: { enumerable: true },
+ bodyUsed: { enumerable: true },
+ arrayBuffer: { enumerable: true },
+ blob: { enumerable: true },
+ json: { enumerable: true },
+ text: { enumerable: true }
+});
+
+Body.mixIn = function (proto) {
+ for (const name of Object.getOwnPropertyNames(Body.prototype)) {
+ // istanbul ignore else: future proof
+ if (!(name in proto)) {
+ const desc = Object.getOwnPropertyDescriptor(Body.prototype, name);
+ Object.defineProperty(proto, name, desc);
+ }
+ }
+};
+
+/**
+ * Consume and convert an entire Body to a Buffer.
+ *
+ * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body
+ *
+ * @return Promise
+ */
+function consumeBody() {
+ var _this4 = this;
+
+ if (this[INTERNALS].disturbed) {
+ return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));
+ }
+
+ this[INTERNALS].disturbed = true;
+
+ if (this[INTERNALS].error) {
+ return Body.Promise.reject(this[INTERNALS].error);
+ }
+
+ let body = this.body;
+
+ // body is null
+ if (body === null) {
+ return Body.Promise.resolve(Buffer.alloc(0));
+ }
+
+ // body is blob
+ if (isBlob(body)) {
+ body = body.stream();
+ }
+
+ // body is buffer
+ if (Buffer.isBuffer(body)) {
+ return Body.Promise.resolve(body);
+ }
+
+ // istanbul ignore if: should never happen
+ if (!(body instanceof Stream)) {
+ return Body.Promise.resolve(Buffer.alloc(0));
+ }
+
+ // body is stream
+ // get ready to actually consume the body
+ let accum = [];
+ let accumBytes = 0;
+ let abort = false;
+
+ return new Body.Promise(function (resolve, reject) {
+ let resTimeout;
+
+ // allow timeout on slow response body
+ if (_this4.timeout) {
+ resTimeout = setTimeout(function () {
+ abort = true;
+ reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));
+ }, _this4.timeout);
+ }
+
+ // handle stream errors
+ body.on('error', function (err) {
+ if (err.name === 'AbortError') {
+ // if the request was aborted, reject with this Error
+ abort = true;
+ reject(err);
+ } else {
+ // other errors, such as incorrect content-encoding
+ reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));
+ }
+ });
+
+ body.on('data', function (chunk) {
+ if (abort || chunk === null) {
+ return;
+ }
+
+ if (_this4.size && accumBytes + chunk.length > _this4.size) {
+ abort = true;
+ reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));
+ return;
+ }
+
+ accumBytes += chunk.length;
+ accum.push(chunk);
+ });
+
+ body.on('end', function () {
+ if (abort) {
+ return;
+ }
+
+ clearTimeout(resTimeout);
+
+ try {
+ resolve(Buffer.concat(accum, accumBytes));
+ } catch (err) {
+ // handle streams that have accumulated too much data (issue #414)
+ reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));
+ }
+ });
+ });
+}
+
+/**
+ * Detect buffer encoding and convert to target encoding
+ * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding
+ *
+ * @param Buffer buffer Incoming buffer
+ * @param String encoding Target encoding
+ * @return String
+ */
+function convertBody(buffer, headers) {
+ if (typeof convert !== 'function') {
+ throw new Error('The package `encoding` must be installed to use the textConverted() function');
+ }
+
+ const ct = headers.get('content-type');
+ let charset = 'utf-8';
+ let res, str;
+
+ // header
+ if (ct) {
+ res = /charset=([^;]*)/i.exec(ct);
+ }
+
+ // no charset in content type, peek at response body for at most 1024 bytes
+ str = buffer.slice(0, 1024).toString();
+
+ // html5
+ if (!res && str) {
+ res = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;
+
+ this[MAP] = Object.create(null);
+
+ if (init instanceof Headers) {
+ const rawHeaders = init.raw();
+ const headerNames = Object.keys(rawHeaders);
+
+ for (const headerName of headerNames) {
+ for (const value of rawHeaders[headerName]) {
+ this.append(headerName, value);
+ }
+ }
+
+ return;
+ }
+
+ // We don't worry about converting prop to ByteString here as append()
+ // will handle it.
+ if (init == null) ; else if (typeof init === 'object') {
+ const method = init[Symbol.iterator];
+ if (method != null) {
+ if (typeof method !== 'function') {
+ throw new TypeError('Header pairs must be iterable');
+ }
+
+ // sequence>
+ // Note: per spec we have to first exhaust the lists then process them
+ const pairs = [];
+ for (const pair of init) {
+ if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {
+ throw new TypeError('Each header pair must be iterable');
+ }
+ pairs.push(Array.from(pair));
+ }
+
+ for (const pair of pairs) {
+ if (pair.length !== 2) {
+ throw new TypeError('Each header pair must be a name/value tuple');
+ }
+ this.append(pair[0], pair[1]);
+ }
+ } else {
+ // record
+ for (const key of Object.keys(init)) {
+ const value = init[key];
+ this.append(key, value);
+ }
+ }
+ } else {
+ throw new TypeError('Provided initializer must be an object');
+ }
+ }
+
+ /**
+ * Return combined header value given name
+ *
+ * @param String name Header name
+ * @return Mixed
+ */
+ get(name) {
+ name = `${name}`;
+ validateName(name);
+ const key = find(this[MAP], name);
+ if (key === undefined) {
+ return null;
+ }
+
+ return this[MAP][key].join(', ');
+ }
+
+ /**
+ * Iterate over all headers
+ *
+ * @param Function callback Executed for each item with parameters (value, name, thisArg)
+ * @param Boolean thisArg `this` context for callback function
+ * @return Void
+ */
+ forEach(callback) {
+ let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
+
+ let pairs = getHeaders(this);
+ let i = 0;
+ while (i < pairs.length) {
+ var _pairs$i = pairs[i];
+ const name = _pairs$i[0],
+ value = _pairs$i[1];
+
+ callback.call(thisArg, value, name, this);
+ pairs = getHeaders(this);
+ i++;
+ }
+ }
+
+ /**
+ * Overwrite header values given name
+ *
+ * @param String name Header name
+ * @param String value Header value
+ * @return Void
+ */
+ set(name, value) {
+ name = `${name}`;
+ value = `${value}`;
+ validateName(name);
+ validateValue(value);
+ const key = find(this[MAP], name);
+ this[MAP][key !== undefined ? key : name] = [value];
+ }
+
+ /**
+ * Append a value onto existing header
+ *
+ * @param String name Header name
+ * @param String value Header value
+ * @return Void
+ */
+ append(name, value) {
+ name = `${name}`;
+ value = `${value}`;
+ validateName(name);
+ validateValue(value);
+ const key = find(this[MAP], name);
+ if (key !== undefined) {
+ this[MAP][key].push(value);
+ } else {
+ this[MAP][name] = [value];
+ }
+ }
+
+ /**
+ * Check for header name existence
+ *
+ * @param String name Header name
+ * @return Boolean
+ */
+ has(name) {
+ name = `${name}`;
+ validateName(name);
+ return find(this[MAP], name) !== undefined;
+ }
+
+ /**
+ * Delete all header values given name
+ *
+ * @param String name Header name
+ * @return Void
+ */
+ delete(name) {
+ name = `${name}`;
+ validateName(name);
+ const key = find(this[MAP], name);
+ if (key !== undefined) {
+ delete this[MAP][key];
+ }
+ }
+
+ /**
+ * Return raw headers (non-spec api)
+ *
+ * @return Object
+ */
+ raw() {
+ return this[MAP];
+ }
+
+ /**
+ * Get an iterator on keys.
+ *
+ * @return Iterator
+ */
+ keys() {
+ return createHeadersIterator(this, 'key');
+ }
+
+ /**
+ * Get an iterator on values.
+ *
+ * @return Iterator
+ */
+ values() {
+ return createHeadersIterator(this, 'value');
+ }
+
+ /**
+ * Get an iterator on entries.
+ *
+ * This is the default iterator of the Headers object.
+ *
+ * @return Iterator
+ */
+ [Symbol.iterator]() {
+ return createHeadersIterator(this, 'key+value');
+ }
+}
+Headers.prototype.entries = Headers.prototype[Symbol.iterator];
+
+Object.defineProperty(Headers.prototype, Symbol.toStringTag, {
+ value: 'Headers',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+Object.defineProperties(Headers.prototype, {
+ get: { enumerable: true },
+ forEach: { enumerable: true },
+ set: { enumerable: true },
+ append: { enumerable: true },
+ has: { enumerable: true },
+ delete: { enumerable: true },
+ keys: { enumerable: true },
+ values: { enumerable: true },
+ entries: { enumerable: true }
+});
+
+function getHeaders(headers) {
+ let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';
+
+ const keys = Object.keys(headers[MAP]).sort();
+ return keys.map(kind === 'key' ? function (k) {
+ return k.toLowerCase();
+ } : kind === 'value' ? function (k) {
+ return headers[MAP][k].join(', ');
+ } : function (k) {
+ return [k.toLowerCase(), headers[MAP][k].join(', ')];
+ });
+}
+
+const INTERNAL = Symbol('internal');
+
+function createHeadersIterator(target, kind) {
+ const iterator = Object.create(HeadersIteratorPrototype);
+ iterator[INTERNAL] = {
+ target,
+ kind,
+ index: 0
+ };
+ return iterator;
+}
+
+const HeadersIteratorPrototype = Object.setPrototypeOf({
+ next() {
+ // istanbul ignore if
+ if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {
+ throw new TypeError('Value of `this` is not a HeadersIterator');
+ }
+
+ var _INTERNAL = this[INTERNAL];
+ const target = _INTERNAL.target,
+ kind = _INTERNAL.kind,
+ index = _INTERNAL.index;
+
+ const values = getHeaders(target, kind);
+ const len = values.length;
+ if (index >= len) {
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+
+ this[INTERNAL].index = index + 1;
+
+ return {
+ value: values[index],
+ done: false
+ };
+ }
+}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));
+
+Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {
+ value: 'HeadersIterator',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+/**
+ * Export the Headers object in a form that Node.js can consume.
+ *
+ * @param Headers headers
+ * @return Object
+ */
+function exportNodeCompatibleHeaders(headers) {
+ const obj = Object.assign({ __proto__: null }, headers[MAP]);
+
+ // http.request() only supports string as Host header. This hack makes
+ // specifying custom Host header possible.
+ const hostHeaderKey = find(headers[MAP], 'Host');
+ if (hostHeaderKey !== undefined) {
+ obj[hostHeaderKey] = obj[hostHeaderKey][0];
+ }
+
+ return obj;
+}
+
+/**
+ * Create a Headers object from an object of headers, ignoring those that do
+ * not conform to HTTP grammar productions.
+ *
+ * @param Object obj Object of headers
+ * @return Headers
+ */
+function createHeadersLenient(obj) {
+ const headers = new Headers();
+ for (const name of Object.keys(obj)) {
+ if (invalidTokenRegex.test(name)) {
+ continue;
+ }
+ if (Array.isArray(obj[name])) {
+ for (const val of obj[name]) {
+ if (invalidHeaderCharRegex.test(val)) {
+ continue;
+ }
+ if (headers[MAP][name] === undefined) {
+ headers[MAP][name] = [val];
+ } else {
+ headers[MAP][name].push(val);
+ }
+ }
+ } else if (!invalidHeaderCharRegex.test(obj[name])) {
+ headers[MAP][name] = [obj[name]];
+ }
+ }
+ return headers;
+}
+
+const INTERNALS$1 = Symbol('Response internals');
+
+// fix an issue where "STATUS_CODES" aren't a named export for node <10
+const STATUS_CODES = http.STATUS_CODES;
+
+/**
+ * Response class
+ *
+ * @param Stream body Readable stream
+ * @param Object opts Response options
+ * @return Void
+ */
+class Response {
+ constructor() {
+ let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+ let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+ Body.call(this, body, opts);
+
+ const status = opts.status || 200;
+ const headers = new Headers(opts.headers);
+
+ if (body != null && !headers.has('Content-Type')) {
+ const contentType = extractContentType(body);
+ if (contentType) {
+ headers.append('Content-Type', contentType);
+ }
+ }
+
+ this[INTERNALS$1] = {
+ url: opts.url,
+ status,
+ statusText: opts.statusText || STATUS_CODES[status],
+ headers,
+ counter: opts.counter
+ };
+ }
+
+ get url() {
+ return this[INTERNALS$1].url || '';
+ }
+
+ get status() {
+ return this[INTERNALS$1].status;
+ }
+
+ /**
+ * Convenience property representing if the request ended normally
+ */
+ get ok() {
+ return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;
+ }
+
+ get redirected() {
+ return this[INTERNALS$1].counter > 0;
+ }
+
+ get statusText() {
+ return this[INTERNALS$1].statusText;
+ }
+
+ get headers() {
+ return this[INTERNALS$1].headers;
+ }
+
+ /**
+ * Clone this response
+ *
+ * @return Response
+ */
+ clone() {
+ return new Response(clone(this), {
+ url: this.url,
+ status: this.status,
+ statusText: this.statusText,
+ headers: this.headers,
+ ok: this.ok,
+ redirected: this.redirected
+ });
+ }
+}
+
+Body.mixIn(Response.prototype);
+
+Object.defineProperties(Response.prototype, {
+ url: { enumerable: true },
+ status: { enumerable: true },
+ ok: { enumerable: true },
+ redirected: { enumerable: true },
+ statusText: { enumerable: true },
+ headers: { enumerable: true },
+ clone: { enumerable: true }
+});
+
+Object.defineProperty(Response.prototype, Symbol.toStringTag, {
+ value: 'Response',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+const INTERNALS$2 = Symbol('Request internals');
+
+// fix an issue where "format", "parse" aren't a named export for node <10
+const parse_url = Url.parse;
+const format_url = Url.format;
+
+const streamDestructionSupported = 'destroy' in Stream.Readable.prototype;
+
+/**
+ * Check if a value is an instance of Request.
+ *
+ * @param Mixed input
+ * @return Boolean
+ */
+function isRequest(input) {
+ return typeof input === 'object' && typeof input[INTERNALS$2] === 'object';
+}
+
+function isAbortSignal(signal) {
+ const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);
+ return !!(proto && proto.constructor.name === 'AbortSignal');
+}
+
+/**
+ * Request class
+ *
+ * @param Mixed input Url or Request instance
+ * @param Object init Custom options
+ * @return Void
+ */
+class Request {
+ constructor(input) {
+ let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+ let parsedURL;
+
+ // normalize input
+ if (!isRequest(input)) {
+ if (input && input.href) {
+ // in order to support Node.js' Url objects; though WHATWG's URL objects
+ // will fall into this branch also (since their `toString()` will return
+ // `href` property anyway)
+ parsedURL = parse_url(input.href);
+ } else {
+ // coerce input to a string before attempting to parse
+ parsedURL = parse_url(`${input}`);
+ }
+ input = {};
+ } else {
+ parsedURL = parse_url(input.url);
+ }
+
+ let method = init.method || input.method || 'GET';
+ method = method.toUpperCase();
+
+ if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {
+ throw new TypeError('Request with GET/HEAD method cannot have body');
+ }
+
+ let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;
+
+ Body.call(this, inputBody, {
+ timeout: init.timeout || input.timeout || 0,
+ size: init.size || input.size || 0
+ });
+
+ const headers = new Headers(init.headers || input.headers || {});
+
+ if (inputBody != null && !headers.has('Content-Type')) {
+ const contentType = extractContentType(inputBody);
+ if (contentType) {
+ headers.append('Content-Type', contentType);
+ }
+ }
+
+ let signal = isRequest(input) ? input.signal : null;
+ if ('signal' in init) signal = init.signal;
+
+ if (signal != null && !isAbortSignal(signal)) {
+ throw new TypeError('Expected signal to be an instanceof AbortSignal');
+ }
+
+ this[INTERNALS$2] = {
+ method,
+ redirect: init.redirect || input.redirect || 'follow',
+ headers,
+ parsedURL,
+ signal
+ };
+
+ // node-fetch-only options
+ this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;
+ this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;
+ this.counter = init.counter || input.counter || 0;
+ this.agent = init.agent || input.agent;
+ }
+
+ get method() {
+ return this[INTERNALS$2].method;
+ }
+
+ get url() {
+ return format_url(this[INTERNALS$2].parsedURL);
+ }
+
+ get headers() {
+ return this[INTERNALS$2].headers;
+ }
+
+ get redirect() {
+ return this[INTERNALS$2].redirect;
+ }
+
+ get signal() {
+ return this[INTERNALS$2].signal;
+ }
+
+ /**
+ * Clone this request
+ *
+ * @return Request
+ */
+ clone() {
+ return new Request(this);
+ }
+}
+
+Body.mixIn(Request.prototype);
+
+Object.defineProperty(Request.prototype, Symbol.toStringTag, {
+ value: 'Request',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+Object.defineProperties(Request.prototype, {
+ method: { enumerable: true },
+ url: { enumerable: true },
+ headers: { enumerable: true },
+ redirect: { enumerable: true },
+ clone: { enumerable: true },
+ signal: { enumerable: true }
+});
+
+/**
+ * Convert a Request to Node.js http request options.
+ *
+ * @param Request A Request instance
+ * @return Object The options object to be passed to http.request
+ */
+function getNodeRequestOptions(request) {
+ const parsedURL = request[INTERNALS$2].parsedURL;
+ const headers = new Headers(request[INTERNALS$2].headers);
+
+ // fetch step 1.3
+ if (!headers.has('Accept')) {
+ headers.set('Accept', '*/*');
+ }
+
+ // Basic fetch
+ if (!parsedURL.protocol || !parsedURL.hostname) {
+ throw new TypeError('Only absolute URLs are supported');
+ }
+
+ if (!/^https?:$/.test(parsedURL.protocol)) {
+ throw new TypeError('Only HTTP(S) protocols are supported');
+ }
+
+ if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {
+ throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');
+ }
+
+ // HTTP-network-or-cache fetch steps 2.4-2.7
+ let contentLengthValue = null;
+ if (request.body == null && /^(POST|PUT)$/i.test(request.method)) {
+ contentLengthValue = '0';
+ }
+ if (request.body != null) {
+ const totalBytes = getTotalBytes(request);
+ if (typeof totalBytes === 'number') {
+ contentLengthValue = String(totalBytes);
+ }
+ }
+ if (contentLengthValue) {
+ headers.set('Content-Length', contentLengthValue);
+ }
+
+ // HTTP-network-or-cache fetch step 2.11
+ if (!headers.has('User-Agent')) {
+ headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');
+ }
+
+ // HTTP-network-or-cache fetch step 2.15
+ if (request.compress && !headers.has('Accept-Encoding')) {
+ headers.set('Accept-Encoding', 'gzip,deflate');
+ }
+
+ let agent = request.agent;
+ if (typeof agent === 'function') {
+ agent = agent(parsedURL);
+ }
+
+ if (!headers.has('Connection') && !agent) {
+ headers.set('Connection', 'close');
+ }
+
+ // HTTP-network fetch step 4.2
+ // chunked encoding is handled by Node.js
+
+ return Object.assign({}, parsedURL, {
+ method: request.method,
+ headers: exportNodeCompatibleHeaders(headers),
+ agent
+ });
+}
+
+/**
+ * abort-error.js
+ *
+ * AbortError interface for cancelled requests
+ */
+
+/**
+ * Create AbortError instance
+ *
+ * @param String message Error message for human
+ * @return AbortError
+ */
+function AbortError(message) {
+ Error.call(this, message);
+
+ this.type = 'aborted';
+ this.message = message;
+
+ // hide custom error implementation details from end-users
+ Error.captureStackTrace(this, this.constructor);
+}
+
+AbortError.prototype = Object.create(Error.prototype);
+AbortError.prototype.constructor = AbortError;
+AbortError.prototype.name = 'AbortError';
+
+// fix an issue where "PassThrough", "resolve" aren't a named export for node <10
+const PassThrough$1 = Stream.PassThrough;
+const resolve_url = Url.resolve;
+
+/**
+ * Fetch function
+ *
+ * @param Mixed url Absolute url or Request instance
+ * @param Object opts Fetch options
+ * @return Promise
+ */
+function fetch(url, opts) {
+
+ // allow custom promise
+ if (!fetch.Promise) {
+ throw new Error('native promise missing, set fetch.Promise to your favorite alternative');
+ }
+
+ Body.Promise = fetch.Promise;
+
+ // wrap http.request into fetch
+ return new fetch.Promise(function (resolve, reject) {
+ // build request object
+ const request = new Request(url, opts);
+ const options = getNodeRequestOptions(request);
+
+ const send = (options.protocol === 'https:' ? https : http).request;
+ const signal = request.signal;
+
+ let response = null;
+
+ const abort = function abort() {
+ let error = new AbortError('The user aborted a request.');
+ reject(error);
+ if (request.body && request.body instanceof Stream.Readable) {
+ request.body.destroy(error);
+ }
+ if (!response || !response.body) return;
+ response.body.emit('error', error);
+ };
+
+ if (signal && signal.aborted) {
+ abort();
+ return;
+ }
+
+ const abortAndFinalize = function abortAndFinalize() {
+ abort();
+ finalize();
+ };
+
+ // send request
+ const req = send(options);
+ let reqTimeout;
+
+ if (signal) {
+ signal.addEventListener('abort', abortAndFinalize);
+ }
+
+ function finalize() {
+ req.abort();
+ if (signal) signal.removeEventListener('abort', abortAndFinalize);
+ clearTimeout(reqTimeout);
+ }
+
+ if (request.timeout) {
+ req.once('socket', function (socket) {
+ reqTimeout = setTimeout(function () {
+ reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));
+ finalize();
+ }, request.timeout);
+ });
+ }
+
+ req.on('error', function (err) {
+ reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
+ finalize();
+ });
+
+ req.on('response', function (res) {
+ clearTimeout(reqTimeout);
+
+ const headers = createHeadersLenient(res.headers);
+
+ // HTTP fetch step 5
+ if (fetch.isRedirect(res.statusCode)) {
+ // HTTP fetch step 5.2
+ const location = headers.get('Location');
+
+ // HTTP fetch step 5.3
+ const locationURL = location === null ? null : resolve_url(request.url, location);
+
+ // HTTP fetch step 5.5
+ switch (request.redirect) {
+ case 'error':
+ reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));
+ finalize();
+ return;
+ case 'manual':
+ // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.
+ if (locationURL !== null) {
+ // handle corrupted header
+ try {
+ headers.set('Location', locationURL);
+ } catch (err) {
+ // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request
+ reject(err);
+ }
+ }
+ break;
+ case 'follow':
+ // HTTP-redirect fetch step 2
+ if (locationURL === null) {
+ break;
+ }
+
+ // HTTP-redirect fetch step 5
+ if (request.counter >= request.follow) {
+ reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));
+ finalize();
+ return;
+ }
+
+ // HTTP-redirect fetch step 6 (counter increment)
+ // Create a new Request object.
+ const requestOpts = {
+ headers: new Headers(request.headers),
+ follow: request.follow,
+ counter: request.counter + 1,
+ agent: request.agent,
+ compress: request.compress,
+ method: request.method,
+ body: request.body,
+ signal: request.signal,
+ timeout: request.timeout,
+ size: request.size
+ };
+
+ // HTTP-redirect fetch step 9
+ if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {
+ reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));
+ finalize();
+ return;
+ }
+
+ // HTTP-redirect fetch step 11
+ if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {
+ requestOpts.method = 'GET';
+ requestOpts.body = undefined;
+ requestOpts.headers.delete('content-length');
+ }
+
+ // HTTP-redirect fetch step 15
+ resolve(fetch(new Request(locationURL, requestOpts)));
+ finalize();
+ return;
+ }
+ }
+
+ // prepare response
+ res.once('end', function () {
+ if (signal) signal.removeEventListener('abort', abortAndFinalize);
+ });
+ let body = res.pipe(new PassThrough$1());
+
+ const response_options = {
+ url: request.url,
+ status: res.statusCode,
+ statusText: res.statusMessage,
+ headers: headers,
+ size: request.size,
+ timeout: request.timeout,
+ counter: request.counter
+ };
+
+ // HTTP-network fetch step 12.1.1.3
+ const codings = headers.get('Content-Encoding');
+
+ // HTTP-network fetch step 12.1.1.4: handle content codings
+
+ // in following scenarios we ignore compression support
+ // 1. compression support is disabled
+ // 2. HEAD request
+ // 3. no Content-Encoding header
+ // 4. no content response (204)
+ // 5. content not modified response (304)
+ if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {
+ response = new Response(body, response_options);
+ resolve(response);
+ return;
+ }
+
+ // For Node v6+
+ // Be less strict when decoding compressed responses, since sometimes
+ // servers send slightly invalid responses that are still accepted
+ // by common browsers.
+ // Always using Z_SYNC_FLUSH is what cURL does.
+ const zlibOptions = {
+ flush: zlib.Z_SYNC_FLUSH,
+ finishFlush: zlib.Z_SYNC_FLUSH
+ };
+
+ // for gzip
+ if (codings == 'gzip' || codings == 'x-gzip') {
+ body = body.pipe(zlib.createGunzip(zlibOptions));
+ response = new Response(body, response_options);
+ resolve(response);
+ return;
+ }
+
+ // for deflate
+ if (codings == 'deflate' || codings == 'x-deflate') {
+ // handle the infamous raw deflate response from old servers
+ // a hack for old IIS and Apache servers
+ const raw = res.pipe(new PassThrough$1());
+ raw.once('data', function (chunk) {
+ // see http://stackoverflow.com/questions/37519828
+ if ((chunk[0] & 0x0F) === 0x08) {
+ body = body.pipe(zlib.createInflate());
+ } else {
+ body = body.pipe(zlib.createInflateRaw());
+ }
+ response = new Response(body, response_options);
+ resolve(response);
+ });
+ return;
+ }
+
+ // for br
+ if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {
+ body = body.pipe(zlib.createBrotliDecompress());
+ response = new Response(body, response_options);
+ resolve(response);
+ return;
+ }
+
+ // otherwise, use response as-is
+ response = new Response(body, response_options);
+ resolve(response);
+ });
+
+ writeToStream(req, request);
+ });
+}
+/**
+ * Redirect code matching
+ *
+ * @param Number code Status code
+ * @return Boolean
+ */
+fetch.isRedirect = function (code) {
+ return code === 301 || code === 302 || code === 303 || code === 307 || code === 308;
+};
+
+// expose Promise
+fetch.Promise = global.Promise;
+
+export default fetch;
+export { Headers, Request, Response, FetchError };
diff --git a/node_modules/node-fetch/package.json b/node_modules/node-fetch/package.json
new file mode 100644
index 0000000..3f1b643
--- /dev/null
+++ b/node_modules/node-fetch/package.json
@@ -0,0 +1,93 @@
+{
+ "_from": "node-fetch@^2.6.1",
+ "_id": "node-fetch@2.6.1",
+ "_inBundle": false,
+ "_integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
+ "_location": "/node-fetch",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "node-fetch@^2.6.1",
+ "name": "node-fetch",
+ "escapedName": "node-fetch",
+ "rawSpec": "^2.6.1",
+ "saveSpec": null,
+ "fetchSpec": "^2.6.1"
+ },
+ "_requiredBy": [
+ "/@octokit/request"
+ ],
+ "_resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
+ "_shasum": "045bd323631f76ed2e2b55573394416b639a0052",
+ "_spec": "node-fetch@^2.6.1",
+ "_where": "D:\\Work\\Actions\\setup-helm\\node_modules\\@octokit\\request",
+ "author": {
+ "name": "David Frank"
+ },
+ "browser": "./browser.js",
+ "bugs": {
+ "url": "https://github.com/bitinn/node-fetch/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {},
+ "deprecated": false,
+ "description": "A light-weight module that brings window.fetch to node.js",
+ "devDependencies": {
+ "@ungap/url-search-params": "^0.1.2",
+ "abort-controller": "^1.1.0",
+ "abortcontroller-polyfill": "^1.3.0",
+ "babel-core": "^6.26.3",
+ "babel-plugin-istanbul": "^4.1.6",
+ "babel-preset-env": "^1.6.1",
+ "babel-register": "^6.16.3",
+ "chai": "^3.5.0",
+ "chai-as-promised": "^7.1.1",
+ "chai-iterator": "^1.1.1",
+ "chai-string": "~1.3.0",
+ "codecov": "^3.3.0",
+ "cross-env": "^5.2.0",
+ "form-data": "^2.3.3",
+ "is-builtin-module": "^1.0.0",
+ "mocha": "^5.0.0",
+ "nyc": "11.9.0",
+ "parted": "^0.1.1",
+ "promise": "^8.0.3",
+ "resumer": "0.0.0",
+ "rollup": "^0.63.4",
+ "rollup-plugin-babel": "^3.0.7",
+ "string-to-arraybuffer": "^1.0.2",
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "files": [
+ "lib/index.js",
+ "lib/index.mjs",
+ "lib/index.es.js",
+ "browser.js"
+ ],
+ "homepage": "https://github.com/bitinn/node-fetch",
+ "keywords": [
+ "fetch",
+ "http",
+ "promise"
+ ],
+ "license": "MIT",
+ "main": "lib/index",
+ "module": "lib/index.mjs",
+ "name": "node-fetch",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/bitinn/node-fetch.git"
+ },
+ "scripts": {
+ "build": "cross-env BABEL_ENV=rollup rollup -c",
+ "coverage": "cross-env BABEL_ENV=coverage nyc --reporter json --reporter text mocha -R spec test/test.js && codecov -f coverage/coverage-final.json",
+ "prepare": "npm run build",
+ "report": "cross-env BABEL_ENV=coverage nyc --reporter lcov --reporter text mocha -R spec test/test.js",
+ "test": "cross-env BABEL_ENV=test mocha --require babel-register --throw-deprecation test/test.js"
+ },
+ "version": "2.6.1"
+}
diff --git a/node_modules/once/LICENSE b/node_modules/once/LICENSE
new file mode 100644
index 0000000..19129e3
--- /dev/null
+++ b/node_modules/once/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/once/README.md b/node_modules/once/README.md
new file mode 100644
index 0000000..1f1ffca
--- /dev/null
+++ b/node_modules/once/README.md
@@ -0,0 +1,79 @@
+# once
+
+Only call a function once.
+
+## usage
+
+```javascript
+var once = require('once')
+
+function load (file, cb) {
+ cb = once(cb)
+ loader.load('file')
+ loader.once('load', cb)
+ loader.once('error', cb)
+}
+```
+
+Or add to the Function.prototype in a responsible way:
+
+```javascript
+// only has to be done once
+require('once').proto()
+
+function load (file, cb) {
+ cb = cb.once()
+ loader.load('file')
+ loader.once('load', cb)
+ loader.once('error', cb)
+}
+```
+
+Ironically, the prototype feature makes this module twice as
+complicated as necessary.
+
+To check whether you function has been called, use `fn.called`. Once the
+function is called for the first time the return value of the original
+function is saved in `fn.value` and subsequent calls will continue to
+return this value.
+
+```javascript
+var once = require('once')
+
+function load (cb) {
+ cb = once(cb)
+ var stream = createStream()
+ stream.once('data', cb)
+ stream.once('end', function () {
+ if (!cb.called) cb(new Error('not found'))
+ })
+}
+```
+
+## `once.strict(func)`
+
+Throw an error if the function is called twice.
+
+Some functions are expected to be called only once. Using `once` for them would
+potentially hide logical errors.
+
+In the example below, the `greet` function has to call the callback only once:
+
+```javascript
+function greet (name, cb) {
+ // return is missing from the if statement
+ // when no name is passed, the callback is called twice
+ if (!name) cb('Hello anonymous')
+ cb('Hello ' + name)
+}
+
+function log (msg) {
+ console.log(msg)
+}
+
+// this will print 'Hello anonymous' but the logical error will be missed
+greet(null, once(msg))
+
+// once.strict will print 'Hello anonymous' and throw an error when the callback will be called the second time
+greet(null, once.strict(msg))
+```
diff --git a/node_modules/once/once.js b/node_modules/once/once.js
new file mode 100644
index 0000000..2354067
--- /dev/null
+++ b/node_modules/once/once.js
@@ -0,0 +1,42 @@
+var wrappy = require('wrappy')
+module.exports = wrappy(once)
+module.exports.strict = wrappy(onceStrict)
+
+once.proto = once(function () {
+ Object.defineProperty(Function.prototype, 'once', {
+ value: function () {
+ return once(this)
+ },
+ configurable: true
+ })
+
+ Object.defineProperty(Function.prototype, 'onceStrict', {
+ value: function () {
+ return onceStrict(this)
+ },
+ configurable: true
+ })
+})
+
+function once (fn) {
+ var f = function () {
+ if (f.called) return f.value
+ f.called = true
+ return f.value = fn.apply(this, arguments)
+ }
+ f.called = false
+ return f
+}
+
+function onceStrict (fn) {
+ var f = function () {
+ if (f.called)
+ throw new Error(f.onceError)
+ f.called = true
+ return f.value = fn.apply(this, arguments)
+ }
+ var name = fn.name || 'Function wrapped with `once`'
+ f.onceError = name + " shouldn't be called more than once"
+ f.called = false
+ return f
+}
diff --git a/node_modules/once/package.json b/node_modules/once/package.json
new file mode 100644
index 0000000..5fe3f3a
--- /dev/null
+++ b/node_modules/once/package.json
@@ -0,0 +1,67 @@
+{
+ "_from": "once@^1.4.0",
+ "_id": "once@1.4.0",
+ "_inBundle": false,
+ "_integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "_location": "/once",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "once@^1.4.0",
+ "name": "once",
+ "escapedName": "once",
+ "rawSpec": "^1.4.0",
+ "saveSpec": null,
+ "fetchSpec": "^1.4.0"
+ },
+ "_requiredBy": [
+ "/@octokit/request",
+ "/@octokit/request-error"
+ ],
+ "_resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "_shasum": "583b1aa775961d4b113ac17d9c50baef9dd76bd1",
+ "_spec": "once@^1.4.0",
+ "_where": "D:\\Work\\Actions\\setup-helm\\node_modules\\@octokit\\request",
+ "author": {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me",
+ "url": "http://blog.izs.me/"
+ },
+ "bugs": {
+ "url": "https://github.com/isaacs/once/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "wrappy": "1"
+ },
+ "deprecated": false,
+ "description": "Run a function exactly one time",
+ "devDependencies": {
+ "tap": "^7.0.1"
+ },
+ "directories": {
+ "test": "test"
+ },
+ "files": [
+ "once.js"
+ ],
+ "homepage": "https://github.com/isaacs/once#readme",
+ "keywords": [
+ "once",
+ "function",
+ "one",
+ "single"
+ ],
+ "license": "ISC",
+ "main": "once.js",
+ "name": "once",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/isaacs/once.git"
+ },
+ "scripts": {
+ "test": "tap test/*.js"
+ },
+ "version": "1.4.0"
+}
diff --git a/node_modules/universal-user-agent/LICENSE.md b/node_modules/universal-user-agent/LICENSE.md
new file mode 100644
index 0000000..f105ab0
--- /dev/null
+++ b/node_modules/universal-user-agent/LICENSE.md
@@ -0,0 +1,7 @@
+# [ISC License](https://spdx.org/licenses/ISC)
+
+Copyright (c) 2018, Gregor Martynus (https://github.com/gr2m)
+
+Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/universal-user-agent/README.md b/node_modules/universal-user-agent/README.md
new file mode 100644
index 0000000..170ae0c
--- /dev/null
+++ b/node_modules/universal-user-agent/README.md
@@ -0,0 +1,25 @@
+# universal-user-agent
+
+> Get a user agent string in both browser and node
+
+[](https://www.npmjs.com/package/universal-user-agent)
+[](https://github.com/gr2m/universal-user-agent/actions?query=workflow%3ATest+branch%3Amaster)
+[](https://greenkeeper.io/)
+
+```js
+const { getUserAgent } = require("universal-user-agent");
+// or import { getUserAgent } from "universal-user-agent";
+
+const userAgent = getUserAgent();
+// userAgent will look like this
+// in browser: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) Gecko/20100101 Firefox/61.0"
+// in node: Node.js/v8.9.4 (macOS High Sierra; x64)
+```
+
+## Credits
+
+The Node implementation was originally inspired by [default-user-agent](https://www.npmjs.com/package/default-user-agent).
+
+## License
+
+[ISC](LICENSE.md)
diff --git a/node_modules/universal-user-agent/dist-node/index.js b/node_modules/universal-user-agent/dist-node/index.js
new file mode 100644
index 0000000..16c05dc
--- /dev/null
+++ b/node_modules/universal-user-agent/dist-node/index.js
@@ -0,0 +1,18 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+function getUserAgent() {
+ if (typeof navigator === "object" && "userAgent" in navigator) {
+ return navigator.userAgent;
+ }
+
+ if (typeof process === "object" && "version" in process) {
+ return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;
+ }
+
+ return "";
+}
+
+exports.getUserAgent = getUserAgent;
+//# sourceMappingURL=index.js.map
diff --git a/node_modules/universal-user-agent/dist-node/index.js.map b/node_modules/universal-user-agent/dist-node/index.js.map
new file mode 100644
index 0000000..6a435c4
--- /dev/null
+++ b/node_modules/universal-user-agent/dist-node/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["../dist-src/index.js"],"sourcesContent":["export function getUserAgent() {\n if (typeof navigator === \"object\" && \"userAgent\" in navigator) {\n return navigator.userAgent;\n }\n if (typeof process === \"object\" && \"version\" in process) {\n return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;\n }\n return \"\";\n}\n"],"names":["getUserAgent","navigator","userAgent","process","version","substr","platform","arch"],"mappings":";;;;AAAO,SAASA,YAAT,GAAwB;AAC3B,MAAI,OAAOC,SAAP,KAAqB,QAArB,IAAiC,eAAeA,SAApD,EAA+D;AAC3D,WAAOA,SAAS,CAACC,SAAjB;AACH;;AACD,MAAI,OAAOC,OAAP,KAAmB,QAAnB,IAA+B,aAAaA,OAAhD,EAAyD;AACrD,WAAQ,WAAUA,OAAO,CAACC,OAAR,CAAgBC,MAAhB,CAAuB,CAAvB,CAA0B,KAAIF,OAAO,CAACG,QAAS,KAAIH,OAAO,CAACI,IAAK,GAAlF;AACH;;AACD,SAAO,4BAAP;AACH;;;;"}
\ No newline at end of file
diff --git a/node_modules/universal-user-agent/dist-src/index.js b/node_modules/universal-user-agent/dist-src/index.js
new file mode 100644
index 0000000..79d75d3
--- /dev/null
+++ b/node_modules/universal-user-agent/dist-src/index.js
@@ -0,0 +1,9 @@
+export function getUserAgent() {
+ if (typeof navigator === "object" && "userAgent" in navigator) {
+ return navigator.userAgent;
+ }
+ if (typeof process === "object" && "version" in process) {
+ return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;
+ }
+ return "";
+}
diff --git a/node_modules/universal-user-agent/dist-types/index.d.ts b/node_modules/universal-user-agent/dist-types/index.d.ts
new file mode 100644
index 0000000..a7bb1c4
--- /dev/null
+++ b/node_modules/universal-user-agent/dist-types/index.d.ts
@@ -0,0 +1 @@
+export declare function getUserAgent(): string;
diff --git a/node_modules/universal-user-agent/dist-web/index.js b/node_modules/universal-user-agent/dist-web/index.js
new file mode 100644
index 0000000..c550c02
--- /dev/null
+++ b/node_modules/universal-user-agent/dist-web/index.js
@@ -0,0 +1,12 @@
+function getUserAgent() {
+ if (typeof navigator === "object" && "userAgent" in navigator) {
+ return navigator.userAgent;
+ }
+ if (typeof process === "object" && "version" in process) {
+ return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;
+ }
+ return "";
+}
+
+export { getUserAgent };
+//# sourceMappingURL=index.js.map
diff --git a/node_modules/universal-user-agent/dist-web/index.js.map b/node_modules/universal-user-agent/dist-web/index.js.map
new file mode 100644
index 0000000..b9d9d79
--- /dev/null
+++ b/node_modules/universal-user-agent/dist-web/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["../dist-src/index.js"],"sourcesContent":["export function getUserAgent() {\n if (typeof navigator === \"object\" && \"userAgent\" in navigator) {\n return navigator.userAgent;\n }\n if (typeof process === \"object\" && \"version\" in process) {\n return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;\n }\n return \"\";\n}\n"],"names":[],"mappings":"AAAO,SAAS,YAAY,GAAG;AAC/B,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,WAAW,IAAI,SAAS,EAAE;AACnE,QAAQ,OAAO,SAAS,CAAC,SAAS,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,SAAS,IAAI,OAAO,EAAE;AAC7D,QAAQ,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7F,KAAK;AACL,IAAI,OAAO,4BAA4B,CAAC;AACxC;;;;"}
\ No newline at end of file
diff --git a/node_modules/universal-user-agent/package.json b/node_modules/universal-user-agent/package.json
new file mode 100644
index 0000000..245a161
--- /dev/null
+++ b/node_modules/universal-user-agent/package.json
@@ -0,0 +1,65 @@
+{
+ "_from": "universal-user-agent@^6.0.0",
+ "_id": "universal-user-agent@6.0.0",
+ "_inBundle": false,
+ "_integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==",
+ "_location": "/universal-user-agent",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "universal-user-agent@^6.0.0",
+ "name": "universal-user-agent",
+ "escapedName": "universal-user-agent",
+ "rawSpec": "^6.0.0",
+ "saveSpec": null,
+ "fetchSpec": "^6.0.0"
+ },
+ "_requiredBy": [
+ "/@octokit/endpoint",
+ "/@octokit/graphql",
+ "/@octokit/request"
+ ],
+ "_resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
+ "_shasum": "3381f8503b251c0d9cd21bc1de939ec9df5480ee",
+ "_spec": "universal-user-agent@^6.0.0",
+ "_where": "D:\\Work\\Actions\\setup-helm\\node_modules\\@octokit\\graphql",
+ "bugs": {
+ "url": "https://github.com/gr2m/universal-user-agent/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {},
+ "deprecated": false,
+ "description": "Get a user agent string in both browser and node",
+ "devDependencies": {
+ "@gr2m/pika-plugin-build-web": "^0.6.0-issue-84.1",
+ "@pika/pack": "^0.5.0",
+ "@pika/plugin-build-node": "^0.9.1",
+ "@pika/plugin-ts-standard-pkg": "^0.9.1",
+ "@types/jest": "^25.1.0",
+ "jest": "^24.9.0",
+ "prettier": "^2.0.0",
+ "semantic-release": "^17.0.5",
+ "ts-jest": "^26.0.0",
+ "typescript": "^3.6.2"
+ },
+ "files": [
+ "dist-*/",
+ "bin/"
+ ],
+ "homepage": "https://github.com/gr2m/universal-user-agent#readme",
+ "keywords": [],
+ "license": "ISC",
+ "main": "dist-node/index.js",
+ "module": "dist-web/index.js",
+ "name": "universal-user-agent",
+ "pika": true,
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/gr2m/universal-user-agent.git"
+ },
+ "sideEffects": false,
+ "source": "dist-src/index.js",
+ "types": "dist-types/index.d.ts",
+ "version": "6.0.0"
+}
diff --git a/node_modules/wrappy/LICENSE b/node_modules/wrappy/LICENSE
new file mode 100644
index 0000000..19129e3
--- /dev/null
+++ b/node_modules/wrappy/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/wrappy/README.md b/node_modules/wrappy/README.md
new file mode 100644
index 0000000..98eab25
--- /dev/null
+++ b/node_modules/wrappy/README.md
@@ -0,0 +1,36 @@
+# wrappy
+
+Callback wrapping utility
+
+## USAGE
+
+```javascript
+var wrappy = require("wrappy")
+
+// var wrapper = wrappy(wrapperFunction)
+
+// make sure a cb is called only once
+// See also: http://npm.im/once for this specific use case
+var once = wrappy(function (cb) {
+ var called = false
+ return function () {
+ if (called) return
+ called = true
+ return cb.apply(this, arguments)
+ }
+})
+
+function printBoo () {
+ console.log('boo')
+}
+// has some rando property
+printBoo.iAmBooPrinter = true
+
+var onlyPrintOnce = once(printBoo)
+
+onlyPrintOnce() // prints 'boo'
+onlyPrintOnce() // does nothing
+
+// random property is retained!
+assert.equal(onlyPrintOnce.iAmBooPrinter, true)
+```
diff --git a/node_modules/wrappy/package.json b/node_modules/wrappy/package.json
new file mode 100644
index 0000000..2ca490c
--- /dev/null
+++ b/node_modules/wrappy/package.json
@@ -0,0 +1,58 @@
+{
+ "_from": "wrappy@1",
+ "_id": "wrappy@1.0.2",
+ "_inBundle": false,
+ "_integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "_location": "/wrappy",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "wrappy@1",
+ "name": "wrappy",
+ "escapedName": "wrappy",
+ "rawSpec": "1",
+ "saveSpec": null,
+ "fetchSpec": "1"
+ },
+ "_requiredBy": [
+ "/once"
+ ],
+ "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "_shasum": "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f",
+ "_spec": "wrappy@1",
+ "_where": "D:\\Work\\Actions\\setup-helm\\node_modules\\once",
+ "author": {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me",
+ "url": "http://blog.izs.me/"
+ },
+ "bugs": {
+ "url": "https://github.com/npm/wrappy/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {},
+ "deprecated": false,
+ "description": "Callback wrapping utility",
+ "devDependencies": {
+ "tap": "^2.3.1"
+ },
+ "directories": {
+ "test": "test"
+ },
+ "files": [
+ "wrappy.js"
+ ],
+ "homepage": "https://github.com/npm/wrappy",
+ "license": "ISC",
+ "main": "wrappy.js",
+ "name": "wrappy",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/npm/wrappy.git"
+ },
+ "scripts": {
+ "test": "tap --coverage test/*.js"
+ },
+ "version": "1.0.2"
+}
diff --git a/node_modules/wrappy/wrappy.js b/node_modules/wrappy/wrappy.js
new file mode 100644
index 0000000..bb7e7d6
--- /dev/null
+++ b/node_modules/wrappy/wrappy.js
@@ -0,0 +1,33 @@
+// Returns a wrapper function that returns a wrapped callback
+// The wrapper function should do some stuff, and return a
+// presumably different callback function.
+// This makes sure that own properties are retained, so that
+// decorations and such are not lost along the way.
+module.exports = wrappy
+function wrappy (fn, cb) {
+ if (fn && cb) return wrappy(fn)(cb)
+
+ if (typeof fn !== 'function')
+ throw new TypeError('need wrapper function')
+
+ Object.keys(fn).forEach(function (k) {
+ wrapper[k] = fn[k]
+ })
+
+ return wrapper
+
+ function wrapper() {
+ var args = new Array(arguments.length)
+ for (var i = 0; i < args.length; i++) {
+ args[i] = arguments[i]
+ }
+ var ret = fn.apply(this, args)
+ var cb = args[args.length-1]
+ if (typeof ret === 'function' && ret !== cb) {
+ Object.keys(cb).forEach(function (k) {
+ ret[k] = cb[k]
+ })
+ }
+ return ret
+ }
+}
diff --git a/package-lock.json b/package-lock.json
index 9aab715..3d10c54 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -49,12 +49,93 @@
}
}
},
+ "@octokit/endpoint": {
+ "version": "6.0.11",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.11.tgz",
+ "integrity": "sha512-fUIPpx+pZyoLW4GCs3yMnlj2LfoXTWDUVPTC4V3MUEKZm48W+XYpeWSZCv+vYF1ZABUm2CqnDVf1sFtIYrj7KQ==",
+ "requires": {
+ "@octokit/types": "^6.0.3",
+ "is-plain-object": "^5.0.0",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "@octokit/graphql": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.6.1.tgz",
+ "integrity": "sha512-2lYlvf4YTDgZCTXTW4+OX+9WTLFtEUc6hGm4qM1nlZjzxj+arizM4aHWzBVBCxY9glh7GIs0WEuiSgbVzv8cmA==",
+ "requires": {
+ "@octokit/request": "^5.3.0",
+ "@octokit/types": "^6.0.3",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "@octokit/openapi-types": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-5.3.2.tgz",
+ "integrity": "sha512-NxF1yfYOUO92rCx3dwvA2onF30Vdlg7YUkMVXkeptqpzA3tRLplThhFleV/UKWFgh7rpKu1yYRbvNDUtzSopKA=="
+ },
+ "@octokit/request": {
+ "version": "5.4.14",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.14.tgz",
+ "integrity": "sha512-VkmtacOIQp9daSnBmDI92xNIeLuSRDOIuplp/CJomkvzt7M18NXgG044Cx/LFKLgjKt9T2tZR6AtJayba9GTSA==",
+ "requires": {
+ "@octokit/endpoint": "^6.0.1",
+ "@octokit/request-error": "^2.0.0",
+ "@octokit/types": "^6.7.1",
+ "deprecation": "^2.0.0",
+ "is-plain-object": "^5.0.0",
+ "node-fetch": "^2.6.1",
+ "once": "^1.4.0",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "@octokit/request-error": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.5.tgz",
+ "integrity": "sha512-T/2wcCFyM7SkXzNoyVNWjyVlUwBvW3igM3Btr/eKYiPmucXTtkxt2RBsf6gn3LTzaLSLTQtNmvg+dGsOxQrjZg==",
+ "requires": {
+ "@octokit/types": "^6.0.3",
+ "deprecation": "^2.0.0",
+ "once": "^1.4.0"
+ }
+ },
+ "@octokit/types": {
+ "version": "6.12.2",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.12.2.tgz",
+ "integrity": "sha512-kCkiN8scbCmSq+gwdJV0iLgHc0O/GTPY1/cffo9kECu1MvatLPh9E+qFhfRIktKfHEA6ZYvv6S1B4Wnv3bi3pA==",
+ "requires": {
+ "@octokit/openapi-types": "^5.3.2"
+ }
+ },
"@types/node": {
"version": "12.7.4",
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.4.tgz",
"integrity": "sha512-W0+n1Y+gK/8G2P/piTkBBN38Qc5Q1ZSO6B5H3QmPCUewaiXOo2GCAWZ4ElZCcNhjJuBSUSLGFUJnmlCn5+nxOQ==",
"dev": true
},
+ "deprecation": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
+ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
+ },
+ "is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q=="
+ },
+ "node-fetch": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
+ "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "requires": {
+ "wrappy": "1"
+ }
+ },
"semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
@@ -85,10 +166,20 @@
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
"integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI="
},
+ "universal-user-agent": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
+ "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w=="
+ },
"uuid": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
"integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ=="
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
}
}
}
diff --git a/package.json b/package.json
index 08521dd..9d3d9a0 100644
--- a/package.json
+++ b/package.json
@@ -6,10 +6,11 @@
"author": "Anumita Shenoy",
"license": "MIT",
"dependencies": {
- "@actions/tool-cache": "1.1.2",
- "@actions/io": "^1.0.0",
"@actions/core": "^1.2.6",
"@actions/exec": "^1.0.0",
+ "@actions/io": "^1.0.0",
+ "@actions/tool-cache": "1.1.2",
+ "@octokit/graphql": "^4.6.1",
"semver": "^6.1.0"
},
"main": "lib/run.js",
diff --git a/src/run.ts b/src/run.ts
index 14854ce..fccdd70 100644
--- a/src/run.ts
+++ b/src/run.ts
@@ -5,138 +5,152 @@ import * as os from 'os';
import * as path from 'path';
import * as util from 'util';
import * as fs from 'fs';
-import * as semver from 'semver';
import * as toolCache from '@actions/tool-cache';
import * as core from '@actions/core';
+import { graphql } from '@octokit/graphql';
const helmToolName = 'helm';
const stableHelmVersion = 'v3.2.1';
-const helmAllReleasesUrl = 'https://api.github.com/repos/helm/helm/releases';
+const LATEST_HELM2_VERSION = '2.*';
+const LATEST_HELM3_VERSION = '3.*';
function getExecutableExtension(): string {
- if (os.type().match(/^Win/)) {
- return '.exe';
- }
- return '';
+ if (os.type().match(/^Win/)) {
+ return '.exe';
+ }
+ return '';
}
function getHelmDownloadURL(version: string): string {
- switch (os.type()) {
- case 'Linux':
- return util.format('https://get.helm.sh/helm-%s-linux-amd64.zip', version);
+ switch (os.type()) {
+ case 'Linux':
+ return util.format('https://get.helm.sh/helm-%s-linux-amd64.zip', version);
- case 'Darwin':
- return util.format('https://get.helm.sh/helm-%s-darwin-amd64.zip', version);
+ case 'Darwin':
+ return util.format('https://get.helm.sh/helm-%s-darwin-amd64.zip', version);
- case 'Windows_NT':
- default:
- return util.format('https://get.helm.sh/helm-%s-windows-amd64.zip', version);
- }
+ case 'Windows_NT':
+ default:
+ return util.format('https://get.helm.sh/helm-%s-windows-amd64.zip', version);
+ }
}
-async function getStableHelmVersion(): Promise {
- try {
- const downloadPath = await toolCache.downloadTool(helmAllReleasesUrl);
- const responseArray = JSON.parse(fs.readFileSync(downloadPath, 'utf8').toString().trim());
- let latestHelmVersion = semver.clean(stableHelmVersion);
- responseArray.forEach(response => {
- if (response && response.tag_name) {
- let currentHelmVerison = semver.clean(response.tag_name.toString());
- if (currentHelmVerison) {
- if (currentHelmVerison.toString().indexOf('rc') == -1 && semver.gt(currentHelmVerison, latestHelmVersion)) {
- //If current helm version is not a pre release and is greater than latest helm version
- latestHelmVersion = currentHelmVerison;
- }
- }
- }
- });
- latestHelmVersion = "v" + latestHelmVersion;
- return latestHelmVersion;
- } catch (error) {
- core.warning(util.format("Cannot get the latest Helm info from %s. Error %s. Using default Helm version %s.", helmAllReleasesUrl, error, stableHelmVersion));
- }
-
- return stableHelmVersion;
-}
-
-
var walkSync = function (dir, filelist, fileToFind) {
- var files = fs.readdirSync(dir);
- filelist = filelist || [];
- files.forEach(function (file) {
- if (fs.statSync(path.join(dir, file)).isDirectory()) {
- filelist = walkSync(path.join(dir, file), filelist, fileToFind);
- }
- else {
- core.debug(file);
- if (file == fileToFind) {
- filelist.push(path.join(dir, file));
- }
- }
- });
- return filelist;
+ var files = fs.readdirSync(dir);
+ filelist = filelist || [];
+ files.forEach(function (file) {
+ if (fs.statSync(path.join(dir, file)).isDirectory()) {
+ filelist = walkSync(path.join(dir, file), filelist, fileToFind);
+ }
+ else {
+ core.debug(file);
+ if (file == fileToFind) {
+ filelist.push(path.join(dir, file));
+ }
+ }
+ });
+ return filelist;
};
async function downloadHelm(version: string): Promise {
- if (!version) { version = await getStableHelmVersion(); }
- let cachedToolpath = toolCache.find(helmToolName, version);
- if (!cachedToolpath) {
- let helmDownloadPath;
- try {
- helmDownloadPath = await toolCache.downloadTool(getHelmDownloadURL(version));
- } catch (exception) {
- throw new Error(util.format("Failed to download Helm from location ", getHelmDownloadURL(version)));
+ if (!version) { version = await getLatestHelmVersionFor("v3"); }
+ let cachedToolpath = toolCache.find(helmToolName, version);
+ if (!cachedToolpath) {
+ let helmDownloadPath;
+ try {
+ helmDownloadPath = await toolCache.downloadTool(getHelmDownloadURL(version));
+ } catch (exception) {
+ throw new Error(util.format("Failed to download Helm from location ", getHelmDownloadURL(version)));
+ }
+
+ fs.chmodSync(helmDownloadPath, '777');
+ const unzipedHelmPath = await toolCache.extractZip(helmDownloadPath);
+ cachedToolpath = await toolCache.cacheDir(unzipedHelmPath, helmToolName, version);
+ }
+
+ const helmpath = findHelm(cachedToolpath);
+ if (!helmpath) {
+ throw new Error(util.format("Helm executable not found in path ", cachedToolpath));
+ }
+
+ fs.chmodSync(helmpath, '777');
+ return helmpath;
+}
+
+async function getLatestHelmVersionFor(type) {
+ const token = core.getInput('token', { 'required': true });
+ try {
+ const { repository } = await graphql(
+ `{
+ repository(name:"helm", owner:"helm") {
+ releases(last: 100) {
+ nodes {
+ tagName
+ }
}
+ }
+ }`,
+ {
+ headers: {
+ authorization: `token ${token}`
+ }
+ }
+ );
+ const releases = repository.releases.nodes.reverse();
+ releases.forEach(release => {
+ if (isValidVersion(release.tagName, type))
+ return release.tagName;
+ });
+ } catch (err) {
+ core.warning(util.format("Error while fetching the latest Helm %s release. Error: %s. Using defaul Helm version %s.", type, err.toString(), stableHelmVersion));
+ }
+ return stableHelmVersion;
+}
- fs.chmodSync(helmDownloadPath, '777');
- const unzipedHelmPath = await toolCache.extractZip(helmDownloadPath);
- cachedToolpath = await toolCache.cacheDir(unzipedHelmPath, helmToolName, version);
- }
-
- const helmpath = findHelm(cachedToolpath);
- if (!helmpath) {
- throw new Error(util.format("Helm executable not found in path ", cachedToolpath));
- }
-
- fs.chmodSync(helmpath, '777');
- return helmpath;
+// isValidVersion checks if verison matches the specified type and is a stable release
+function isValidVersion(version, type) {
+ if (!version.startsWith(type))
+ return false;
+ return version.indexOf('rc') == -1
}
function findHelm(rootFolder: string): string {
- fs.chmodSync(rootFolder, '777');
- var filelist: string[] = [];
- walkSync(rootFolder, filelist, helmToolName + getExecutableExtension());
- if (!filelist) {
- throw new Error(util.format("Helm executable not found in path ", rootFolder));
- }
- else {
- return filelist[0];
- }
+ fs.chmodSync(rootFolder, '777');
+ var filelist: string[] = [];
+ walkSync(rootFolder, filelist, helmToolName + getExecutableExtension());
+ if (!filelist) {
+ throw new Error(util.format("Helm executable not found in path ", rootFolder));
+ }
+ else {
+ return filelist[0];
+ }
}
async function run() {
- let version = core.getInput('version', { 'required': true });
- if (version.toLocaleLowerCase() === 'latest') {
- version = await getStableHelmVersion();
- } else if (!version.toLocaleLowerCase().startsWith('v')) {
- version = 'v' + version;
+ let version = core.getInput('version', { 'required': true });
+ if (version.toLocaleLowerCase() === 'latest' || version === LATEST_HELM3_VERSION) {
+ version = await getLatestHelmVersionFor("v3");
+ } else if (version === LATEST_HELM2_VERSION) {
+ version = await getLatestHelmVersionFor("v2");
+ } else if (!version.toLocaleLowerCase().startsWith('v')) {
+ version = 'v' + version;
+ }
+
+ let cachedPath = await downloadHelm(version);
+
+ try {
+
+ if (!process.env['PATH'].startsWith(path.dirname(cachedPath))) {
+ core.addPath(path.dirname(cachedPath));
}
+ }
+ catch {
+ //do nothing, set as output variable
+ }
- let cachedPath = await downloadHelm(version);
-
- try {
-
- if (!process.env['PATH'].startsWith(path.dirname(cachedPath))) {
- core.addPath(path.dirname(cachedPath));
- }
- }
- catch {
- //do nothing, set as output variable
- }
-
- console.log(`Helm tool version: '${version}' has been cached at ${cachedPath}`);
- core.setOutput('helm-path', cachedPath);
+ console.log(`Helm tool version: '${version}' has been cached at ${cachedPath}`);
+ core.setOutput('helm-path', cachedPath);
}
run().catch(core.setFailed);
\ No newline at end of file