-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtypes.ts
More file actions
54 lines (46 loc) · 1.71 KB
/
types.ts
File metadata and controls
54 lines (46 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import { HttpMethod } from '../enum';
import { HttpContext } from './http-context';
export interface UseHttpClientParams {
baseUrl: string;
}
export type AbortableHttpRequestReturn<HttpResponseT> = [
res: Promise<HttpResponseT>,
abort: AbortController
];
export interface PerformHttpRequestParams<HttpRequestBodyT, HttpResponseT> {
relativeUrl: string;
parser: HttpResponseParser<HttpResponseT>;
baseUrlOverride: string;
context: HttpContext;
requestOptions: Partial<HttpRequestOptions<HttpRequestBodyT>>;
}
export type HttpClientRequest = <HttpResponseT, HttpRequestBodyT>(
params: Partial<PerformHttpRequestParams<HttpRequestBodyT, HttpResponseT>>
) => Promise<HttpResponseT>;
export type HttpClientAbortableRequest = <HttpResponseT, HttpRequestBodyT>(
params: Partial<PerformHttpRequestParams<HttpRequestBodyT, HttpResponseT>>
) => AbortableHttpRequestReturn<HttpResponseT>;
export interface UseHttpClientReturn {
request: HttpClientRequest;
get: HttpClientRequest;
post: HttpClientRequest;
put: HttpClientRequest;
patch: HttpClientRequest;
deleteReq: HttpClientRequest;
abortableRequest: HttpClientAbortableRequest;
abortableGet: HttpClientAbortableRequest;
abortablePost: HttpClientAbortableRequest;
abortablePatch: HttpClientAbortableRequest;
abortablePut: HttpClientAbortableRequest;
abortableDelete: HttpClientAbortableRequest;
}
export interface HttpRequestOptions<RequestBody> {
body: RequestBody | null | undefined;
credentials: RequestCredentials | undefined;
headers?: HeadersInit;
maxAge?: number;
method: HttpMethod;
queryParams?: Record<string, string>;
signal?: AbortSignal;
}
export type HttpResponseParser<HttpResponse> = (response: Response) => Promise<HttpResponse>;