[Glitch] Improve apiRequest helper types
Port fa9b905fdf110afc2e0e710283bea8e81c1161aa to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com>
This commit is contained in:
parent
5d04c56c48
commit
b5060ba9c3
@ -107,15 +107,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;
|
||||||
} = {},
|
} = {},
|
||||||
) {
|
) {
|
||||||
@ -128,30 +131,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 });
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user