Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion scripts/update-endpoints/templates/endpoints.ts.template
Original file line number Diff line number Diff line change
Expand Up @@ -116,4 +116,6 @@ export interface Endpoints {
"{{method}}"
>,
{{/each}}
}
}

export type EndpointKeys = keyof Endpoints;
4 changes: 2 additions & 2 deletions src/EndpointDefaults.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import type { Url } from "./Url.js";
* The `.endpoint()` method is guaranteed to set all keys defined by RequestParameters
* as well as the method property.
*/
export type EndpointDefaults = RequestParameters & {
export interface EndpointDefaults extends RequestParameters {
baseUrl: Url;
method: RequestMethod;
url?: Url;
Expand All @@ -19,4 +19,4 @@ export type EndpointDefaults = RequestParameters & {
format: string;
previews?: string[];
};
};
}
14 changes: 7 additions & 7 deletions src/EndpointInterface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import type { RequestOptions } from "./RequestOptions.js";
import type { RequestParameters } from "./RequestParameters.js";
import type { Route } from "./Route.js";

import type { Endpoints } from "./generated/Endpoints.js";
import type { EndpointKeys, Endpoints } from "./generated/Endpoints.js";

export interface EndpointInterface<D extends object = object> {
/**
Expand All @@ -25,13 +25,13 @@ export interface EndpointInterface<D extends object = object> {
*/
<
R extends Route,
P extends RequestParameters = R extends keyof Endpoints
P extends RequestParameters = R extends EndpointKeys
? Endpoints[R]["parameters"] & RequestParameters
: RequestParameters,
>(
route: keyof Endpoints | R,
route: EndpointKeys | R,
parameters?: P,
): (R extends keyof Endpoints ? Endpoints[R]["request"] : RequestOptions) &
): (R extends EndpointKeys ? Endpoints[R]["request"] : RequestOptions) &
Pick<P, keyof RequestOptions>;

/**
Expand All @@ -57,14 +57,14 @@ export interface EndpointInterface<D extends object = object> {
*/
<
R extends Route,
P extends RequestParameters = R extends keyof Endpoints
P extends RequestParameters = R extends EndpointKeys
? Endpoints[R]["parameters"] & RequestParameters
: RequestParameters,
>(
route: keyof Endpoints | R,
route: EndpointKeys | R,
parameters?: P,
): D &
(R extends keyof Endpoints
(R extends EndpointKeys
? Endpoints[R]["request"] & Endpoints[R]["parameters"]
: EndpointDefaults) &
P;
Expand Down
4 changes: 2 additions & 2 deletions src/EndpointOptions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import type { RequestMethod } from "./RequestMethod.js";
import type { Url } from "./Url.js";
import type { RequestParameters } from "./RequestParameters.js";

export type EndpointOptions = RequestParameters & {
export interface EndpointOptions extends RequestParameters {
method: RequestMethod;
url: Url;
};
}
8 changes: 4 additions & 4 deletions src/RequestInterface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import type { OctokitResponse } from "./OctokitResponse.js";
import type { RequestParameters } from "./RequestParameters.js";
import type { Route } from "./Route.js";

import type { Endpoints } from "./generated/Endpoints.js";
import type { EndpointKeys, Endpoints } from "./generated/Endpoints.js";

export interface RequestInterface<D extends object = object> {
/**
Expand All @@ -24,11 +24,11 @@ export interface RequestInterface<D extends object = object> {
* @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
*/
<R extends Route>(
route: keyof Endpoints | R,
options?: R extends keyof Endpoints
route: EndpointKeys | R,
options?: R extends EndpointKeys
? Endpoints[R]["parameters"] & RequestParameters
: RequestParameters,
): R extends keyof Endpoints
): R extends EndpointKeys
? Promise<Endpoints[R]["response"]>
: Promise<OctokitResponse<any>>;

Expand Down
2 changes: 2 additions & 0 deletions src/generated/Endpoints.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6892,3 +6892,5 @@ export interface Endpoints {
"put"
>;
}

export type EndpointKeys = keyof Endpoints;