Skip to content

Commit d166044

Browse files
author
Ivan Grishin
committed
♻️ Fix types names
1 parent 97f2100 commit d166044

File tree

1 file changed

+31
-43
lines changed

1 file changed

+31
-43
lines changed

src/index.ts

+31-43
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ type ContentTypes =
77
| 'blob'
88
| 'void'
99

10-
interface UnknownHeaders extends Record<string, string> {}
11-
interface UnknownPayload {
10+
export interface Headers extends Record<string, string> {}
11+
export interface Payload {
1212
json?: unknown
1313
params?: Record<string, unknown>
1414
}
@@ -22,69 +22,61 @@ export interface ResponseBody extends Promise<Response> {
2222
void(): Promise<void>
2323
}
2424

25-
export interface Options<Payload extends UnknownPayload> extends RequestInit {
25+
export interface Options<P extends Payload> extends RequestInit {
2626
/** Resource URL */
2727
resource?: string
2828
/** Object that will be stringified with `JSON.stringify` */
29-
json?: Payload['json']
29+
json?: P['json']
3030
/** Object that can be passed to `serialize` */
31-
params?: Payload['params']
31+
params?: P['params']
3232
/** Throw `TimeoutError` if timeout is passed */
3333
timeout?: number
3434
/** String that will prepended to `resource` in `fetch` instance */
3535
prefixUrl?: string
3636
/** Request headers */
37-
headers?: UnknownHeaders
37+
headers?: Headers
3838
/**
3939
* `node-fetch` v3 option, default is 10mb
4040
* @url https://github.com/exah/ya-fetch#node-js-support
4141
*/
4242
highWaterMark?: number
4343
/** Request headers, can be async */
44-
getHeaders?(
45-
resource: string,
46-
init: RequestInit
47-
): UnknownHeaders | Promise<UnknownHeaders>
44+
getHeaders?(resource: string, init: RequestInit): Headers | Promise<Headers>
4845
/** Custom params serializer, default to `URLSearchParams` */
49-
serialize?(params: Payload['params']): URLSearchParams | string
46+
serialize?(params: P['params']): URLSearchParams | string
5047
/** Response handler, must handle status codes or throw `ResponseError` */
5148
onResponse?(
5249
response: Response,
53-
options: Options<Payload>
50+
options: Options<P>
5451
): Response | Promise<Response>
5552
/** Response handler with success status codes 200-299 */
5653
onSuccess?(
5754
response: Response,
58-
options: Options<Payload>
55+
options: Options<P>
5956
): Response | Promise<Response>
6057
/** Error handler. Throw passed `error` for unhandled cases, throw custom errors, or return the new `Response` */
6158
onFailure?(
6259
error: ResponseError | AbortError | TimeoutError | TypeError | Error,
63-
options: Options<Payload>
60+
options: Options<P>
6461
): Response | Promise<Response>
6562
/** Transform parsed JSON from response */
6663
onJSON?(input: unknown): unknown
6764
}
6865

69-
export interface Instance<Payload extends UnknownPayload> {
70-
(resource: string, options?: Options<Payload>): ResponseBody
71-
72-
create<Payload extends UnknownPayload>(
73-
options?: Options<Payload>
74-
): Instance<Payload>
75-
extend<P extends Payload>(options?: Options<P>): Instance<P>
76-
77-
get<P extends Payload>(resource: string, options?: Options<P>): ResponseBody
78-
post<P extends Payload>(resource: string, options?: Options<P>): ResponseBody
79-
put<P extends Payload>(resource: string, options?: Options<P>): ResponseBody
80-
patch<P extends Payload>(resource: string, options?: Options<P>): ResponseBody
81-
head<P extends Payload>(resource: string, options?: Options<P>): ResponseBody
82-
delete<P extends Payload>(
83-
resource: string,
84-
options?: Options<P>
85-
): ResponseBody
86-
87-
options: Options<Payload>
66+
export interface Instance<P extends Payload> {
67+
(resource: string, options?: Options<P>): ResponseBody
68+
69+
create<P extends Payload>(options?: Options<P>): Instance<P>
70+
extend<T extends P>(options?: Options<T>): Instance<T>
71+
72+
get<T extends P>(resource: string, options?: Options<T>): ResponseBody
73+
post<T extends P>(resource: string, options?: Options<T>): ResponseBody
74+
put<T extends P>(resource: string, options?: Options<T>): ResponseBody
75+
patch<T extends P>(resource: string, options?: Options<T>): ResponseBody
76+
head<T extends P>(resource: string, options?: Options<T>): ResponseBody
77+
delete<T extends P>(resource: string, options?: Options<T>): ResponseBody
78+
79+
options: Options<P>
8880
}
8981

9082
type ResponseError = Error & {
@@ -115,7 +107,7 @@ const ERROR_NAMES = {
115107
Abort: 'AbortError',
116108
} as const
117109

118-
const DEFAULTS: Options<UnknownPayload> = {
110+
const DEFAULTS: Options<Payload> = {
119111
prefixUrl: '',
120112
credentials: 'same-origin',
121113
highWaterMark: 1024 * 1024 * 10, // 10mb
@@ -181,9 +173,7 @@ function isTimeoutError(error: any): error is TimeoutError {
181173
return error.name === ERROR_NAMES.Timeout
182174
}
183175

184-
function request<Payload extends UnknownPayload>(
185-
baseOptions: Options<Payload>
186-
): ResponseBody {
176+
function request<P extends Payload>(baseOptions: Options<P>): ResponseBody {
187177
const opts = mergeOptions(DEFAULTS, baseOptions)
188178
const query = keys(opts.params).length
189179
? '?' + opts.serialize(opts.params)
@@ -251,19 +241,17 @@ function request<Payload extends UnknownPayload>(
251241
}, promise as ResponseBody)
252242
}
253243

254-
function create<Payload extends UnknownPayload>(
255-
baseOptions?: Options<Payload>
256-
): Instance<Payload> {
257-
const extend = <T extends Payload>(options: Options<T>) =>
244+
function create<P extends Payload>(baseOptions?: Options<P>): Instance<P> {
245+
const extend = <T extends P>(options: Options<T>) =>
258246
create<T>(mergeOptions(instance.options, options))
259247

260248
const createMethod =
261249
(method: RequestMethods) =>
262-
<T extends Payload>(
250+
<T extends P>(
263251
resource: string,
264252
options?: Omit<Options<T>, 'method' | 'resource'>
265253
) =>
266-
request<Payload & T>(
254+
request<P & T>(
267255
mergeOptions(instance.options, merge({ resource, method }, options))
268256
)
269257

0 commit comments

Comments
 (0)