diff --git a/types/react-request/index.d.ts b/types/react-request/index.d.ts index 3134825fbe..a161ff9339 100644 --- a/types/react-request/index.d.ts +++ b/types/react-request/index.d.ts @@ -1,51 +1,73 @@ // Type definitions for react-request 3.1 // Project: https://github.com/jamesplease/react-request // Definitions by: Danny Cochran +// Angus Fretwell +// Jonathan Ly // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.9 import * as React from 'react'; -export interface RenderProps { - requestName: string; - requestKey: string; - fetching: boolean; - failed: boolean; - error: Error | null; - response: Response | null; - url: string; - data: T | null; - doFetch: (options?: FetchRequestProps) => Promise; +export interface FetchResponse { + url: string; + init: any; + failed: boolean; + requestKey: string; + response: Response | null; + data: T | null; + error: Error | null; + didUnmount: boolean; +} + +export interface RenderProps extends FetchResponse { + requestName: string; + fetching: boolean; + doFetch: DoFetch; } export interface FetchRequestProps extends RequestInit { - lazy?: boolean; - url: string; + lazy?: boolean; + url: string; } export interface FetchProps extends FetchRequestProps { - children?: (renderProps: RenderProps) => React.ReactNode; + afterFetch?: (args: FetchResponse) => void; + transformData?: (data: any) => T; + children?: (renderProps: RenderProps) => React.ReactNode; } +export interface DoFetchOptions extends RequestInit { + url?: string; +} + +export type DoFetch = ( + options?: DoFetchOptions +) => Promise>; + // TODO(dannycochran) RequestKeyOptions, ProxyRequest, fetchDedupe, getRequestKey, isRequestInFlight, clearRequestCache // should all be defined in an adjacent typings directory for fetch-dedupe. export interface RequestKeyOptions { - url?: string; - method?: string; - responseType?: string; - body?: string; + url?: string; + method?: string; + responseType?: string; + body?: string; } export interface ProxyRequest { - requestKey: string; - res: Response; + requestKey: string; + res: Response; } // TODO(dannycochran) Fill out fetchDedupe options. -export function fetchDedupe(input: any, init?: any, dedupeOptions?: any): Promise; +export function fetchDedupe( + input: any, + init?: any, + dedupeOptions?: any +): Promise; + export function getRequestKey(keyOptions?: RequestKeyOptions): string; export function isRequestInFlight(): boolean; export function clearRequestCache(): void; export function clearResponseCache(): void; -export class Fetch extends React.Component> { } +export class Fetch extends React.Component> {}