import { Octokit } from "@octokit/core"; import * as OctokitTypes from "@octokit/types"; export { EndpointOptions, RequestInterface, OctokitResponse, RequestParameters, Route, } from "@octokit/types"; export { PaginatingEndpoints } from "./generated/paginating-endpoints"; import { PaginatingEndpoints } from "./generated/paginating-endpoints"; declare type KnownKeys = Extract<{ [K in keyof T]: string extends K ? never : number extends K ? never : K; } extends { [_ in keyof T]: infer U; } ? U : never, keyof T>; declare type KeysMatching = { [K in keyof T]: T[K] extends V ? K : never; }[keyof T]; declare type KnownKeysMatching = KeysMatching>, V>; declare type GetResultsType = T extends { data: any[]; } ? T["data"] : T extends { data: object; } ? T["data"][KnownKeysMatching] : never; declare type NormalizeResponse = T & { data: GetResultsType; }; declare type DataType = "data" extends keyof T ? T["data"] : unknown; export interface MapFunction>, M = unknown[]> { (response: T, done: () => void): M; } export declare type PaginationResults = T[]; export interface PaginateInterface { /** * Paginate a request using endpoint options and map each response to a custom array * * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. * @param {function} mapFn Optional method to map each response to a custom array */ (options: OctokitTypes.EndpointOptions, mapFn: MapFunction>, M[]>): Promise>; /** * Paginate a request using endpoint options * * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. */ (options: OctokitTypes.EndpointOptions): Promise>; /** * Paginate a request using a known endpoint route string and map each response to a custom array * * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` * @param {function} mapFn Optional method to map each response to a custom array */ (route: R, mapFn: MapFunction): Promise; /** * Paginate a request using a known endpoint route string and parameters, and map each response to a custom array * * @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`. * @param {function} mapFn Optional method to map each response to a custom array */ (route: R, parameters: PaginatingEndpoints[R]["parameters"], mapFn: MapFunction): Promise; /** * Paginate a request using an known endpoint route string * * @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: R, parameters?: PaginatingEndpoints[R]["parameters"]): Promise>; /** * Paginate a request using an unknown endpoint route string * * @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: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): Promise; /** * Paginate a request using an endpoint method and a map function * * @param {string} request Request method (`octokit.request` or `@octokit/request`) * @param {function} mapFn? Optional method to map each response to a custom array */ (request: R, mapFn: MapFunction>, M>): Promise; /** * Paginate a request using an endpoint method, parameters, and a map function * * @param {string} request Request method (`octokit.request` or `@octokit/request`) * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. * @param {function} mapFn? Optional method to map each response to a custom array */ (request: R, parameters: Parameters[0], mapFn: MapFunction>, M>): Promise; /** * Paginate a request using an endpoint method and parameters * * @param {string} request Request method (`octokit.request` or `@octokit/request`) * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. */ (request: R, parameters?: Parameters[0]): Promise>["data"]>; iterator: { /** * Get an async iterator to paginate a request using endpoint options * * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. */ (options: OctokitTypes.EndpointOptions): AsyncIterableIterator>>; /** * Get an async iterator to paginate a request using a known endpoint route string and optional parameters * * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of * @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: R, parameters?: PaginatingEndpoints[R]["parameters"]): AsyncIterableIterator>>; /** * Get an async iterator to paginate a request using an unknown endpoint route string and optional parameters * * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of * @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: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): AsyncIterableIterator>>; /** * Get an async iterator to paginate a request using a request method and optional parameters * * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of * @param {string} request `@octokit/request` or `octokit.request` method * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. */ (request: R, parameters?: Parameters[0]): AsyncIterableIterator>>; }; } export interface ComposePaginateInterface { /** * Paginate a request using endpoint options and map each response to a custom array * * @param {object} octokit Octokit instance * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. * @param {function} mapFn Optional method to map each response to a custom array */ (octokit: Octokit, options: OctokitTypes.EndpointOptions, mapFn: MapFunction>, M[]>): Promise>; /** * Paginate a request using endpoint options * * @param {object} octokit Octokit instance * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. */ (octokit: Octokit, options: OctokitTypes.EndpointOptions): Promise>; /** * Paginate a request using a known endpoint route string and map each response to a custom array * * @param {object} octokit Octokit instance * @param {string} route Request method + URL. Example: `'GET /orgs/{org}'` * @param {function} mapFn Optional method to map each response to a custom array */ (octokit: Octokit, route: R, mapFn: MapFunction): Promise; /** * Paginate a request using a known endpoint route string and parameters, and map each response to a custom array * * @param {object} octokit Octokit instance * @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`. * @param {function} mapFn Optional method to map each response to a custom array */ (octokit: Octokit, route: R, parameters: PaginatingEndpoints[R]["parameters"], mapFn: MapFunction): Promise; /** * Paginate a request using an known endpoint route string * * @param {object} octokit Octokit instance * @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`. */ (octokit: Octokit, route: R, parameters?: PaginatingEndpoints[R]["parameters"]): Promise>; /** * Paginate a request using an unknown endpoint route string * * @param {object} octokit Octokit instance * @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`. */ (octokit: Octokit, route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): Promise; /** * Paginate a request using an endpoint method and a map function * * @param {object} octokit Octokit instance * @param {string} request Request method (`octokit.request` or `@octokit/request`) * @param {function} mapFn? Optional method to map each response to a custom array */ (octokit: Octokit, request: R, mapFn: MapFunction>, M>): Promise; /** * Paginate a request using an endpoint method, parameters, and a map function * * @param {object} octokit Octokit instance * @param {string} request Request method (`octokit.request` or `@octokit/request`) * @param {object} parameters URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. * @param {function} mapFn? Optional method to map each response to a custom array */ (octokit: Octokit, request: R, parameters: Parameters[0], mapFn: MapFunction>, M>): Promise; /** * Paginate a request using an endpoint method and parameters * * @param {object} octokit Octokit instance * @param {string} request Request method (`octokit.request` or `@octokit/request`) * @param {object} parameters? URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. */ (octokit: Octokit, request: R, parameters?: Parameters[0]): Promise>["data"]>; iterator: { /** * Get an async iterator to paginate a request using endpoint options * * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of * * @param {object} octokit Octokit instance * @param {object} options Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. */ (octokit: Octokit, options: OctokitTypes.EndpointOptions): AsyncIterableIterator>>; /** * Get an async iterator to paginate a request using a known endpoint route string and optional parameters * * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of * * @param {object} octokit Octokit instance * @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`. */ (octokit: Octokit, route: R, parameters?: PaginatingEndpoints[R]["parameters"]): AsyncIterableIterator>>; /** * Get an async iterator to paginate a request using an unknown endpoint route string and optional parameters * * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of * * @param {object} octokit Octokit instance * @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`. */ (octokit: Octokit, route: R, parameters?: R extends keyof PaginatingEndpoints ? PaginatingEndpoints[R]["parameters"] : OctokitTypes.RequestParameters): AsyncIterableIterator>>; /** * Get an async iterator to paginate a request using a request method and optional parameters * * @see {link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of} for await...of * * @param {object} octokit Octokit instance * @param {string} request `@octokit/request` or `octokit.request` method * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. */ (octokit: Octokit, request: R, parameters?: Parameters[0]): AsyncIterableIterator>>; }; }