| import { EndpointDefaults } from "./EndpointDefaults"; |
| import { RequestOptions } from "./RequestOptions"; |
| import { RequestParameters } from "./RequestParameters"; |
| import { Route } from "./Route"; |
| import { Endpoints } from "./generated/Endpoints"; |
| export interface EndpointInterface<D extends object = object> { |
| /** |
| * Transforms a GitHub REST API endpoint into generic request options |
| * |
| * @param {object} endpoint Must set `url` unless it's set defaults. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`. |
| */ |
| <O extends RequestParameters = RequestParameters>(options: O & { |
| method?: string; |
| } & ("url" extends keyof D ? { |
| url?: string; |
| } : { |
| url: string; |
| })): RequestOptions & Pick<D & O, keyof RequestOptions>; |
| /** |
| * Transforms a GitHub REST API endpoint into generic 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`. |
| */ |
| <R extends Route, P extends RequestParameters = R extends keyof Endpoints ? Endpoints[R]["parameters"] & RequestParameters : RequestParameters>(route: keyof Endpoints | R, parameters?: P): (R extends keyof Endpoints ? Endpoints[R]["request"] : RequestOptions) & Pick<P, keyof RequestOptions>; |
| /** |
| * Object with current default route and parameters |
| */ |
| DEFAULTS: D & EndpointDefaults; |
| /** |
| * Returns a new `endpoint` interface with new defaults |
| */ |
| defaults: <O extends RequestParameters = RequestParameters>(newDefaults: O) => EndpointInterface<D & O>; |
| 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`. |
| * |
| */ |
| <R extends Route, P extends RequestParameters = R extends keyof Endpoints ? Endpoints[R]["parameters"] & RequestParameters : RequestParameters>(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`. |
| */ |
| <P extends RequestParameters = RequestParameters>(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: <O extends EndpointDefaults = EndpointDefaults>(options: O) => RequestOptions & Pick<O, keyof RequestOptions>; |
| } |