Improve apiRequest helper types (#37544)

This commit is contained in:
diondiondion 2026-01-20 12:04:06 +01:00 committed by GitHub
parent 8ff7662918
commit fa9b905fdf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -128,15 +128,18 @@ export default function api(withAuthorization = true) {
} }
type ApiUrl = `v${1 | '1_alpha' | 2}/${string}`; type ApiUrl = `v${1 | '1_alpha' | 2}/${string}`;
type RequestParamsOrData = Record<string, unknown>; type RequestParamsOrData<T = unknown> = T | Record<string, unknown>;
export async function apiRequest<ApiResponse = unknown>( export async function apiRequest<
ApiResponse = unknown,
ApiParamsOrData = unknown,
>(
method: Method, method: Method,
url: string, url: string,
args: { args: {
signal?: AbortSignal; signal?: AbortSignal;
params?: RequestParamsOrData; params?: RequestParamsOrData<ApiParamsOrData>;
data?: RequestParamsOrData; data?: RequestParamsOrData<ApiParamsOrData>;
timeout?: number; timeout?: number;
} = {}, } = {},
) { ) {
@ -149,30 +152,30 @@ export async function apiRequest<ApiResponse = unknown>(
return data; return data;
} }
export async function apiRequestGet<ApiResponse = unknown>( export async function apiRequestGet<ApiResponse = unknown, ApiParams = unknown>(
url: ApiUrl, url: ApiUrl,
params?: RequestParamsOrData, params?: RequestParamsOrData<ApiParams>,
) { ) {
return apiRequest<ApiResponse>('GET', url, { params }); return apiRequest<ApiResponse>('GET', url, { params });
} }
export async function apiRequestPost<ApiResponse = unknown>( export async function apiRequestPost<ApiResponse = unknown, ApiData = unknown>(
url: ApiUrl, url: ApiUrl,
data?: RequestParamsOrData, data?: RequestParamsOrData<ApiData>,
) { ) {
return apiRequest<ApiResponse>('POST', url, { data }); return apiRequest<ApiResponse>('POST', url, { data });
} }
export async function apiRequestPut<ApiResponse = unknown>( export async function apiRequestPut<ApiResponse = unknown, ApiData = unknown>(
url: ApiUrl, url: ApiUrl,
data?: RequestParamsOrData, data?: RequestParamsOrData<ApiData>,
) { ) {
return apiRequest<ApiResponse>('PUT', url, { data }); return apiRequest<ApiResponse>('PUT', url, { data });
} }
export async function apiRequestDelete<ApiResponse = unknown>( export async function apiRequestDelete<
url: ApiUrl, ApiResponse = unknown,
params?: RequestParamsOrData, ApiParams = unknown,
) { >(url: ApiUrl, params?: RequestParamsOrData<ApiParams>) {
return apiRequest<ApiResponse>('DELETE', url, { params }); return apiRequest<ApiResponse>('DELETE', url, { params });
} }